SR0006: Mover uma referência de coluna em um dos lados de um operador de comparação para usar um índice de coluna
RuleId |
SR0006 |
<strong>Categoria</strong> |
Microsoft.Performance |
Alteração significativa |
Não-separável |
Causa
Como parte de uma comparação, uma expressão contém uma referência de coluna.
Descrição da regra
Seu código pode causar uma verificação de tabela se ele compara uma expressão que contém uma referência de coluna.
Como corrigir violações
Para resolver esse problema, você deve refazer a comparação para que a referência de coluna aparece sozinha em um lado do operador de comparação, em vez de dentro de uma expressão. Quando você executar o código que tenha apenas a referência de coluna em um lado do operador de comparação, SQL Server pode usar o índice da coluna e não é realizada nenhuma verificação de tabela.
Quando suprimir avisos
Você pode suprimir esse aviso se a tabela cuja coluna está sendo comparada nunca conterá mais de algumas linhas.
Exemplo
No primeiro procedimento, uma cláusula WHERE inclui [c1] da coluna em uma expressão como parte de uma comparação. No segundo procedimento, os resultados da comparação serão idêntico mas nunca exigem uma verificação de tabela.
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))
Consulte também
Conceitos
Analisando o código do banco de dados para melhorar a qualidade do código