索引扫描与索引查找的区别




一、索引扫描

与表扫描类似,都是把索引从开始扫描到结束。


 

二、索引查找

会根据你查询的字符,定位到索引的局部位置,然后再开始查找,不用把整个索引全部扫描一遍,在效率上比索引扫描快很多。

 



二、SQL Server 中什么情况极易会导致其执行计划从索引查找(Index Seek)变成索引扫描(Index Scan)



1、隐式转换极易会导致执行计划从索引查找(Index Seek)变为索引扫描(Index Scan)


可以通过两种方式避免SQL做隐式转换:


(1)、确保比较的两者具有相同的数据类型。


(2)、使用强制转换(explicit conversion)方式。



2、非SARG谓词极易会导致执行计划从索引查找(Index Seek)变为索引扫描(Index Scan)


SARG(Searchable Arguments)又叫查询参数


 不满足SARG形式的语句最典型的情况就是包括非操作符的语句,如:NOT、!=、<>;、!<;、!>;NOT EXISTS、NOT IN、NOT LIKE等,另外还有像在谓词使用函数、谓词进行运算等。



3、SQL查询返回数据页(Pages)达到了临界点(Tipping Point)极易会导致索引扫描(Index Scan)或表扫描(Table Scan)




参考资料:  索引扫描与索引查找   http://www.studyofnet.com/news/1040.html

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com