在我的博客上,以前我經(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í)行計劃。

大學(xué)生就業(yè)培訓(xùn),高中生培訓(xùn),在職人員轉(zhuǎn)行培訓(xùn),企業(yè)團訓(xùn)

通常人們不會太關(guān)注書簽查找,因為它們只執(zhí)行幾次。如果你的查詢選擇度太低,查詢優(yōu)化器會用聚集索引掃描或表掃描運算符直接掃描整個表。但只在SQL Server重用緩存的執(zhí)行計劃,這個計劃是有多次不同運行值,包含書簽查找的(基于最初提供的輸入值),因此這個情況很容易發(fā)生,書簽查找反復(fù)執(zhí)行。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式