论坛首页 综合技术论坛

索引的选择(Index Selection)

浏览 1326 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-10-29   最后修改:2010-04-13
当决定在表中创建哪些索引时要对应用中查询进行仔细分析。具体包括,检查查询子句中包括了哪些列;了解数据的分布情况来决定索引的用途;对执行的查询按照重要性和频繁性进行排序。你须注意的是,在创建索引时,不要为了考虑单个的查询而忽略了该表上的其他查询(顾此失彼)。你应该提出一组索引服务于你的表中最有代表性的查询
引用

建议:
SQL Profiler是一个用来帮助你来识别频繁执行和关键的查询的有用的工具。我发现,当你着手处理一个新客户的网站或识别需要调优的应用中有问题查询时,SQL Profiler简直是一个无价之宝。SQL Profiler允许你跟踪SQL Server中正在执行的进程和查询,也可以捕捉 runtime, reads and writes, execution plans,和其他进程信息。这些信息能帮助你识别哪些查询的性能低下,哪些查询经常执行,哪些索引经常被查询用到等等。

你能手工来分析这些信息,也可以保存下来,用索引调优向导(Index Tuning Wizard)进行分析。

因为不可能为所有的列都创建索引,所以,索引首先要满足你的应用中最关键或者是被很多用户频繁执行的查询。如果你有一个查询每月只运行一次,值得创建一个索引来支持该查询吗?并且在该月的其他时间还需要进行维护它。该月中,系统在此索引上花费的时间毫无疑问超过了满足该查询的表扫描花费时间。

如果,因为处理的需要,你必须在该查询运行时需要索引,可以考虑在运行查询时创建一个索引,而在运行结束之后删除该索引。只要创建索引的时间加上有索引的查询执行时间不超过无索引查询执行的时间,那么这也是一种可行的方法。


自我总结:
   钢要用在刀刃上,应在关键和频繁使用的查询上创建索引。
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics