SR0004:避免使用沒有索引的資料行當做 IN 述詞中的測試運算式
RuleId |
SR0004 |
分類 |
Microsoft.Performance |
中斷變更 |
中斷 |
原因
IN 述詞參考沒有索引的資料行。
規則描述
如果您使用的 WHERE 子句參考一或多個不做為 IN 述詞檢索的資料行,會導致資料表掃描。 資料表掃描會降低效能。
如何修正違規
若要解決這個問題,您必須進行其中一項變更:
變更 IN 述詞以便只參考具有索引的那些資料行。
新增索引到 IN 述詞所參考,而且尚未具有索引的任何資料行。
隱藏警告的時機
如果該資料表將永遠不會包含多個資料列,您可以隱藏這項警告。
範例
在此範例中,簡單的 SELECT 陳述式會參考資料行 [c1],該資料行沒有索引。 第二個陳述式會定義一個索引,您可以新增此索引來解析這個警告。
CREATE PROCEDURE [dbo].[Procedure3WithWarnings]
AS
SELECT [Comment]
FROM [dbo].[Table2]
WHERE [c1] IN (1, 2, 3)
CREATE INDEX [IX_Table2_C1]
ON [dbo].[Table2] (c1);