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);

請參閱

概念

分析資料庫程式碼以改善程式碼品質