在我的博客上,以前我經(jīng)常談到SQL Serverl里的書簽查找,還有它們帶來的很多問題。在今天的文章里,我想從性能角度進一步談下書簽查找,還有它們?nèi)绾卫湍阏麄€SQL Server性能。
書簽查找——反復(fù)循環(huán)
如果你的非聚集索引不是個覆蓋非聚集索引,SQL Server的查詢優(yōu)化器會引入書簽查找。對于從非聚集索引你返回的每一行,SQL Server需要在聚集索引里或堆表里進行額外的查找操作。
例如當(dāng)你的的聚集索引包含3層,為了返回必要的信息,對于每一行,你需要3頁額外的讀取。因此,查詢優(yōu)化器再執(zhí)行計劃里選擇書簽查找操作,僅在有意義的時候發(fā)生——基于你查詢的選擇度。下圖展示了有書簽查找操作的執(zhí)行計劃。
通常人們不會太關(guān)注書簽查找,因為它們只執(zhí)行幾次。如果你的查詢選擇度太低,查詢優(yōu)化器會用聚集索引掃描或表掃描運算符直接掃描整個表。但只在SQL Server重用緩存的執(zhí)行計劃,這個計劃是有多次不同運行值,包含書簽查找的(基于最初提供的輸入值),因此這個情況很容易發(fā)生,書簽查找反復(fù)執(zhí)行。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26