博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 查询计划总结
阅读量:6857 次
发布时间:2019-06-26

本文共 725 字,大约阅读时间需要 2 分钟。

1.查询计划文本显示

SET SHOWPLAN_TEXT on 

 

set statistics profile on

 

2.几个指标

1. 【Table Scan】:遍历整个表,查找所匹配的记录行。这个操作将会一行一行的检查,当然,效率也是最差的。

2. 【Index Scan】:根据索引,从表中过滤出来一部分记录,再查找所匹配的记录行,显示比第一种方式的查找范围要小,因此比【Table Scan】要快。
3. 【Index Seek】:根据索引,定位(获取)记录的存放位置,然后取得记录,因此,比起前二种方式会更快。
4. 【Clustered Index Scan】:和【Table Scan】一样。注意:不要以为这里有个Index,就认为不一样了。其实它的意思是说:按聚集索引来逐行扫描每一行记录,因为记录就是按聚集索引来顺序存放的。而【Table Scan】只是说:要扫描的表没有聚集索引而已,因此这二个操作本质上也是一样的。
5. 【Clustered Index Seek】:直接根据聚集索引获取记录,最快!

 

所以,当发现某个查询比较慢时,可以首先检查哪些操作的成本比较高,再看看那些操作是查找记录时,是不是【Table Scan】或者【Clustered Index Scan】,如果确实和这二种操作类型有关,则要考虑增加索引来解决了。不过,增加索引后,也会影响数据表的修改动作,因为修改数据表时,要更新相应字段的索引。所以索引过多,也会影响性能。还有一种情况是不适合增加索引的:某个字段用0或1表示的状态。例如可能有绝大多数是1,那么此时加索引根本就没有意义。这时只能考虑为0或者1这二种情况分开来保存了,分表或者分区都是不错的选择。

转载地址:http://kpjyl.baihongyu.com/

你可能感兴趣的文章
理解Docker容器的进程管理
查看>>
微信小程序独家秘笈之左滑删除
查看>>
Using Oracle's Parallel Execution Features
查看>>
[轉]发布时出现PHP has encountered a Stack overflow 解决办法
查看>>
substitute Simple JavaScript Template :
查看>>
9、如何清空流及缓存
查看>>
gvim汉化及配置
查看>>
ubuntu下JMF RTP不支持单播接收
查看>>
fastboot烧写命令
查看>>
深度测试与alpha混合(1)
查看>>
15幅非常有创意的影子摄影作品欣赏
查看>>
lightbox源码解析
查看>>
SQL Server 2008 VALUES
查看>>
[算法] 已知在平面坐标系内有N个点,求离开给定坐标距离最近的10个点
查看>>
使用DMV和DMF分析数据库性能
查看>>
PHP验证IP地址输入的准确性:数组数值验证
查看>>
Linux c 中alarm,signal,pause的使用说明
查看>>
数据源控件的ASP.NET参数
查看>>
HTML5中custom data-*特性与asp.net mvc 3 表单验证
查看>>
NYoj 14会场安排问题
查看>>