共用方式為


SR0006:將資料行參考移至比較運算子的一邊,以使用資料行索引

RuleId

SR0006

分類

Microsoft.Performance

中斷變更

中斷

原因

比較的一部分,包含資料行參考的運算式。

規則描述

如果您的程式碼比較包含資料表參考的運算式,可能會導致資料表掃描。

如何修正違規

若要解決這個問題,您必須重新作業比較,使資料行參考單獨出現在比較運算式的一方,而不是在運算式內。 當您執行單獨參考比較運算子其中一邊的資料行的程式碼時,SQL Server 可以使用資料行索引,而且不會執行資料表掃描。

隱藏警告的時機

如果要比較其資料行的資料表將永遠不會包含多個資料列,您可以隱藏這項警告。

範例

在第一個程序中,WHERE 子句在運算式中包含資料行 [c1] 以做為比較的一部分。 在第二個程序中,比較結果會完全相同,但永遠不需要資料表掃描。

CREATE PROCEDURE [dbo].[Procedure3WithWarnings]
@param1 int
AS
SELECT [c1], [c2], [c3], [Comment] 
FROM [dbo].[Table2]  
WHERE ([c1] + 5 > @param1)

CREATE PROCEDURE [dbo].[Procedure3Fixed]
@param1 int
AS
SELECT [c1], [c2], [c3], [Comment] 
FROM [dbo].[Table2]  
WHERE ([c1] > (@param1 - 5))

請參閱

概念

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