SQL Server执行计划的理解

时间:2024-01-13 17:44:26

详细看:http://www.cnblogs.com/kissdodog/p/3160560.html

自己总结:

扫描Scan:逐行遍历数据。

查找Seek:根据查询条件,定位到索引的局部位置,然后再开始查找

聚集索引表:含有聚集索引(clustered index)

堆表:不含聚集索引的表。 
注意:仅含有非聚集索引(Nonclustered index),而没有聚集索引(clustered index)的表是堆表

数据访问操作会有以下情况:

1、表扫描Table Scan;(无索引的表为堆表select * from students)

2、聚集索引扫描 Clustered Index Scan;(在堆表上建立聚集索引,即为聚集索引表。但聚集索引字段不为 谓词(where条件) 时,引起该扫描(聚集表的数据存在于聚集索引的叶级节点。因此,聚集扫描与表扫描其实差别不大) select * from students where Name='Jerry' (Clustered_Index_ID))

3、聚集索引查找Clustered Index Seek;(聚集索表,且谓词(where条件)为聚集索引字段,查找指定范围 select * from students where ID=5 (Clustered_Index_ID))

4、索引扫描NonClustered Index Scan(非聚集索引能够覆盖所需的数据 select Name from students (NonClustered_Index_Name))

5、书签查找;(先通过谓词进行索引查找,在根据键查找或对查找获取select的其他字段数据 select * from students where name='jerry'  先进行NonClustered_Index_Name查找来定位,再Clustered_Index_ID键查找来获取select字段值)