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%'