簡體   English   中英

哪個更好:書簽/鍵查找或索引查找

[英]Which is better: Bookmark/Key Lookup or Index Seek

我知道索引查找比索引掃描更好,但在 SQL Server 解釋計划中哪個更可取:索引查找或鍵查找(SQL Server 2000 中的書簽)?

請告訴我他們沒有再次更改 SQL Server 2008 的名稱...

索引搜索,每次。

查找是昂貴的,所以這是覆蓋索引,特別是添加了 INCLUDE 子句以使它們更好。

舉例來說,如果您只期望一行,那么在查找之后進行查找可能比嘗試覆蓋查詢更好。 我們依靠這一點來避免在某些情況下出現另一個索引。

編輯:簡單的談話文章: 使用覆蓋索引來提高查詢性能

編輯,2012 年 8 月

查找是每行發生的,這就是它們無法擴展的原因。 最終,優化器將選擇聚集索引掃描而不是 seek+lookup,因為它比許多查找更有效。

鍵查找與聚集索引查找非常相似(2005 年之前的 SP2 被命名為“查找查找”)。 我認為唯一的區別是 Key Lookup 可以指定一個額外的 PRE-FETCH 參數,指示執行引擎在集群中預取更多的鍵(即,在掃描之后進行聚集索引查找)。

看到 Key Lookup 不會嚇到你。 是嵌套循環中使用的普通運算符,而嵌套循環是普通的連接運算符。 如果您想改進計划,請嘗試改進連接,看看它是否可以使用合並連接(即連接的兩側可以提供相同鍵順序的行,最快連接)或哈希連接(有足夠的內存讓 QO 考慮哈希連接,或者通過在連接之前而不是之后過濾行來減少基數)。

這個 SO question提到關鍵查找是要避免的。 索引查找肯定是性能更好的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM