我有這個簡單的內部聯接查詢和其執行計劃主表有大約34K記錄和細節表有大約51K記錄。但是這個簡單的查詢建議添加一個索引include
(包含我包含在select中的所有主列)。我不期待這可能是什麼原因和補救措施。簡單的內部聯接建議一個包含索引
DECLARE
@StartDrInvDate Date ='2017-06-01',
@EndDrInvDate Date='2017-08-31'
SELECT
Mastertbl.DrInvoiceID,
Mastertbl.DrInvoiceNo,
Mastertbl.DistributorInvNo,
PreparedBy,
detailtbl.BatchNo, detailtbl.Discount,
detailtbl.TradePrice, detailtbl.IssuedUnits,
detailtbl.FreeUnits
FROM
scmDrInvoices Mastertbl
INNER JOIN
scmDrInvoiceDetails detailtbl ON Mastertbl.DrInvoiceID = detailtbl.DrInvoiceID
WHERE
(Mastertbl.DrInvDate BETWEEN @StartDrInvDate AND @EndDrInvDate)
我真正的好奇心就是爲什麼它是在暗示該指數 - 我通常看不到較大的表格
隨着行的數量如果您對目前的表現滿意,您可以放心地忽略這個建議。 – Serg
僅僅因爲SQL Server要求這並不意味着你應該創建它。它基於它在特定查詢上使用的執行計劃的假設。嘗試在Mastertbl.DrInvoiceID上添加非聚集索引幷包含Mastertbl.DrInvDate。查看查詢並播放其上的索引:) – dbajtr
@Serg此查詢實際上是需要一些時間的較大查詢的一部分,並且該查詢在我刪除所有其他連接時提示此索引,並且我只剩下這部分並仍然建議相同的索引 – Zia