我有一個 SP,它在第一次運行時可以運行超過一分鐘。在第二次運行時,它需要不到一秒鐘。
為了解決這個問題,我檢查了執行計劃,它顯示了這一點:


所以我添加了以下索引,據我所知,它應該創建一個索引,因此它不使用 Key Lookup:
CREATE NONCLUSTERED INDEX [ix_account_id_include_utility_id]
ON dbo.account (account_id)
include ( utility_id)
我創建了需要 1 分 50 秒的索引。
然后我再次檢查執行計劃。但它與 Key Lookup 的計劃完全相同。
我在這里的索引做錯了嗎?
我是索引和優化的新手,所以任何建議都將不勝感激。
uj5u.com熱心網友回復:
Keylookup 表示某個特定的欄位在索引中不可用,我們必須去資料頁中提取該欄位。
在您的情況下,accountid用于utility_id從表的資料頁中獲取Account。
您需要做的是,將此實用程式 ID 添加為最右側兩個索引之一的包含列的一部分(如右框中突出顯示的),以避免鍵查找。

但是,在您的情況下,您再次將索引添加到account表中。因此,它沒有利用新創建的索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/476853.html
下一篇:對特定列區分大小寫
