索引掃描與索引查找的區別




一、索引掃描

與表掃描類似,都是把索引從開始掃描到結束。


 

二、索引查找

會根據你查詢的字符,定位到索引的局部位置,然后再開始查找,不用把整個索引全部掃描一遍,在效率上比索引掃描快很多。

 



二、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