索引的选择(Index Selection)

当决定在表中创建哪些索引时要对应用中查询进行仔细分析。[b]具体包括[/b],检查查询子句中包括了哪些列;了解数据的分布情况来决定索引的用途;对执行的查询按照重要性和频繁性进行排序。你须注意的是,在创建索引时,不要为了考虑单个的查询而忽略了该表上的其他查询(顾此失彼)。你应该提出一组索引服务于你的表中[b]最有代表性的查询[/b]。
[quote]
[size=medium][b]建议:[/b][/size]
SQL Profiler是一个用来帮助你来识别频繁执行和关键的查询的有用的工具。我发现,当你着手处理一个新客户的网站或识别需要调优的应用中有问题查询时,SQL Profiler简直是一个无价之宝。SQL Profiler允许你跟踪SQL Server中正在执行的进程和查询,也可以捕捉 runtime, reads and writes, execution plans,和其他进程信息。这些信息能帮助你识别哪些查询的性能低下,哪些查询经常执行,哪些索引经常被查询用到等等。

你能手工来分析这些信息,也可以保存下来,用索引调优向导(Index Tuning Wizard)进行分析。[/quote]
因为不可能为所有的列都创建索引,所以,[b]索引首先要满足你的应用中最关键或者是被很多用户频繁执行的查询[/b]。如果你有一个查询每月只运行一次,值得创建一个索引来支持该查询吗?并且在该月的其他时间还需要进行维护它。该月中,系统在此索引上花费的时间毫无疑问超过了满足该查询的表扫描花费时间。

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


[b]自我总结:[/b]
钢要用在刀刃上,应在关键和频繁使用的查询上创建索引。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值