SR0005: Evitare l'utilizzo di criteri che iniziano con "%" nei predicati LIKE

RuleId

SR0005

Category

Microsoft.Performance

Breaking Change

Non sostanziale

Causa

Il predicato LIKE di una clausola WHERE si avvia con il carattere jolly, "%".

Descrizione della regola

È possibile provocare un'analisi di tabella se si utilizza una clausola WHERE che contiene un predicato LIKE quale 'stringa modello %' per cercare l'occorrenza di un testo ovunque una colonna.

Come correggere le violazioni

Per risolvere questo problema, è necessario modificare la stringa di ricerca in modo che avvii con un carattere che non è un carattere jolly (%) o è necessario creare un indice full-text.

Esclusione di avvisi

È possibile eliminare questo avviso se si utilizza raramente l'affermazione che provoca questo avviso o se la tabella non contiene mai più di alcune righe.

Esempio

Nel primo esempio, l'istruzione SELECT provocherà l'analisi della tabella perché la stringa di ricerca inizia con un carattere jolly. Nel secondo esempio, l'istruzione provocherà una ricerca nell'indice perché la stringa di ricerca non inizia con un carattere jolly. Una ricerca nell'indice recupera solo le righe che corrispondono alla clausola 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%' 

Vedere anche

Concetti

Analisi del codice di database per migliorare la qualità del codice