SQL Server 执行计划中的扫描方式举例说明
SQL Server 执行计划中的扫描方式举例说明
原文地址:http://www.cnblogs.com/zihunqingxin/p/3201155.html
1、执行计划使用方式
选中需要执行的语句,点击Ctrl+L执行
2、示例
student表,id,name,address
id上建立聚集索引
Name建索引
address无索引
3、区别
1. 【Table Scan】:遍历整个表,查找所有匹配的记录行。这个操作将会一行一行的检查,当然,效率也是最差的。
以无索引字段为条件,按存放顺序一个个查,where address='123'
2. 【Index Scan】:根据索引,从表中过滤出来一部分记录,再查找所有匹配的记录行,显然比第一种方式的查找范围要小,因此比【Table Scan】要快。
多重条件,有索引列+无索引列,先从索引列找出范围,再遍历这个范围匹配无索引列。即索引+表扫描
where name='cui' and address='123'
3. 【Index Seek】:根据索引,定位(获取)记录的存放位置,然后取得记录,因此,比起前二种方式会更快。
有索引的单独查询。通过索引找到位置,再找数据。where name='cui'
4. 【Clustered Index Scan】:和【Table Scan】一样。
注意:不要以为这里有个Index,就认为不一样了。其实它的意思是说:按聚集索引来逐行扫描每一行记录,因为记录就是按聚集索引来顺序存放的。而【Table Scan】只是说:要扫描的表没有聚集索引而已,因此这二个操作本质上也是一样的。
5. 【Clustered Index Seek】:直接根据聚集索引获取记录,最快!
where id=1; 聚集索引存的就是位置。比3少一步
相关文章
- SQL Server执行计划
- Sql Server-使用Sql Server自带的分词功能实现字段关键词提取(分词能力很低,慎用)
- SQL Server discarding SPACE during GROUP BY
- sql server 左下角一直显示正在执行查询,应该是某个进程阻塞了
- Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表)
- SQL server 库一直处于还原状态
- 为 SQL Server 2000 数据库添加用户名和密码
- PySe-008-操作MSSQL(Microsoft sql server)基础示例(二)
- sql server 小技巧(5) Sql server 获取指定字符后的所有字符 - 去掉指定字符前的所有字符
- sql server 小技巧(4) Sql server 排序时让空值排在最后
- SQL Server通过整理索引碎片和重建索引提高速度
- SQL Server执行计划的理解
- SQL Server SQL性能优化之--通过拆分SQL提高执行效率,以及性能高低背后的原因
- SQL Server 动态生成数据库所有表Insert语句
- sql server作业报错,但里面的步骤是执行成功的
- sql server在group by 中使用 case when
- sql server DMV汇总
- sql server日志已满报错
- (5.3.9)sql server如何查看数据库版本信息?
- 如何查看正在执行sql的语句及其父语句调用?如何查看正在执行SQL的具体参数值与执行计划?xml执行计划转为图形计划
- 【sql server复制】教你使用SQL SERVER复制
- sql server系统表
- (3.6)sql server存储引擎--文件与数据页及数据行的结构
- mysql和sql server的按组连接
- SQL Server Profiler 跟踪某个数据库某张表sql语句
- SQL Server Profiler监控执行语句