共用方式為


SR0005:避免在 LIKE 述詞中使用以 "%" 開始的模式

RuleId

SR0005

分類

Microsoft.Performance

中斷變更

中斷

原因

WHERE 子句的 LIKE 述詞以萬用字元「%」為開頭。

規則描述

若 WHERE 子句包含如「%模式比對字串」的 LIKE 述詞,且您使用該子句搜尋可能發生在資料行中任何位置的文字,可能會導致資料表掃描。

如何修正違規

若要解決這個問題,您應該變更搜尋字串,使它的開頭不是萬用字元 (%),或者應該建立全文索引。

隱藏警告的時機

如果您很少使用會導致這項警告的陳述式,或資料表永遠不會包含多個資料列,您可以隱藏這項警告。

範例

在第一個範例中,SELECT 陳述式將導致資料表掃描,因為搜尋字串是以萬用字元開頭。 在第二個範例中,陳述式會造成索引搜尋,因為搜尋字串並沒有以萬用字元開頭。 索引搜尋只會擷取符合 WHERE 子句的資料列。

SELECT [dbo].[Table2].[ID], [dbo].[Table2].[c1], [dbo].[Table2].[c2], [dbo].[Table2].[c3], [dbo].[Table2].[Comment] 
FROM dbo.[Table2] 
WHERE Comment LIKE '%pples' 

SELECT [dbo].[Table2].[ID], [dbo].[Table2].[c1], [dbo].[Table2].[c2], [dbo].[Table2].[c3], [dbo].[Table2].[Comment] 
FROM dbo.[Table2] 
WHERE Comment LIKE 'A%' 

請參閱

概念

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