BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

SQL Server 2008索引使用技巧

| 作者 Al Tenhundfeld 关注 0 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2008年8月28日. 估计阅读时间: 2 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

微软MVP及畅销书《Hitchhiker's Guide SQL Server》的作者Bill Vaughn简要给出了SQL Server 2008的索引使用技巧。该主题基于Kimberly TrippPaul Randall(这两位是SQL Server高可用性和性能方面的专家)的建议。

下面是主要的建议:

  • 页(page)密度
    优化行大小:SQL Server 2005(及后续版本)支持8k的列。这意味着一行可以超过80k大小。这有意义么?哦,通常情况下没有。对行大小的管理与效率同样重要。如何提高性能并充分利用空间呢?方法就是当8k的页被多个行塞满的时候,要确保几乎没有空间浪费。这意味着如果行大小超过(或者接近)4k时,一页只适合一行,这样该页大约有4k的空间就浪费了。第二个问题是索引页的数量也必须增加以寻址这些页。
  • 过滤的索引
    这是SQL Server 2008的新特性,它使我们可以向索引增加WHERE子句,这样就可以将索引聚焦到大多数重要的行上。
  • 选择性(Selectivity)
    选择性:当查询优化器(query optimizer,即QO)读取SQL时,选择性的程度决定了索引是否应该用来执行该操作。通过对索引的Statistics(或者“stats”,一个索引可以拥有一个或者多个stats)进行处理分析,QO可以作出决定。基本上,它会权衡使用索引来遍历选择的行或者对表进行扫描这两种方式。Kimberly采用的例子使这一切变得很明朗,但我们却感到惊讶:“当行数(由查询选择的)大约是表中的数据页的1/4时,索引并没有起到什么作用,这时对表进行扫描来获取选择的行效率更高。这通常发生在取出的行数不到表中总行数的5%的情况下...”

SQL Server 2005中关于索引统计、列选择、索引碎片及锁的标准实践依然可用。

Tripp和Randal也认为DTA, a.k.a. Data Engine Tuning Advisor是个有价值的工具。SQL Server 2008已经更新了DTA以提供新的特性,包括改进的工作量解析、增强的可伸缩性、多数据库调校、通过dta命令行界面的改进脚本支持。

查看英文原文:SQL Server 2008 Indexing Tips And Tricks

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT