Partilhar via


SR0005: Evitar o uso de padrões que começam com "%" como predicados

RuleId

SR0005

<strong>Categoria</strong>

Microsoft.Performance

Alteração significativa

Não-separável

Causa

O predicado LIKE de uma cláusula WHERE começa com o caractere curinga, "%".

Descrição da regra

Você pode fazer com que uma verificação de tabela se você usar uma cláusula WHERE que contém um predicado LIKE como, por exemplo, 'seqüência de caracteres padrão %' para procurar o texto que pode ocorrer em qualquer lugar em uma coluna.

Como corrigir violações

Para resolver esse problema, você deve alterar a seqüência de pesquisa para que ele começa com um caractere que não é um curinga (%) ou você deve criar um índice de texto completo.

Quando suprimir avisos

Você pode suprimir esse aviso se você raramente usa a instrução que faz com que esse aviso ou se a tabela nunca conterá mais de algumas linhas.

Exemplo

No primeiro exemplo, a instrução SELECT fará uma verificação de tabela porque a seqüência de pesquisa começa com um caractere curinga. No segundo exemplo, a instrução fará com que uma busca de índice, pois a seqüência de pesquisa não inicia com um caractere curinga. Busca de uma índice recupera apenas as linhas que correspondem à cláusula 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%' 

Consulte também

Conceitos

Analisando o código do banco de dados para melhorar a qualidade do código