/ / KeyLookup em colunas massivas em sql server - sql-server, performance, indexação, otimização de consultas

KeyLookup em colunas maciças em sql server - sql-server, desempenho, indexação, otimização de consultas

Eu tenho uma consulta simples que tem várioscolunas (mais de 1000). Quando eu executo com coluna única, isso me dá como resultado em 2 segundos com busca de índice adequada, leitura lógica, cpu e cada coisa está abaixo dos limites.

Mas quando eu seleciono mais de 1000 colunas, leva 11 minutos para o resultado e me dá uma pesquisa de chave.

Vocês já enfrentaram esse tipo de problema? Alguma sugestão sobre essa questão?

Respostas:

0 para resposta № 1

Normalmente, sugiro adicionar essas colunas no INCLUDE campos do seu índice não agrupado. Adicionando-os no INCLUDE remove o LOOKUP no plano de execução. Mas como tudo com o SQL Server, isso depende. Dependendo de como a tabela é usada, ou seja, se você está atualizando a tabela mais do que simples SELECTnisto, então o LOOKUP pode estar ok.


0 para resposta № 2

Se essa consulta for executada uma vez por ano, a sobrecargade índice adicional provavelmente não vale a pena. Se você precisar de um tempo de resposta rápido, aquela única vez do ano em que precisa ser executada, procure em "pré-executar" e apenas apresente o resultado para o usuário.

A diferença no seu plano de consulta pode serpor causa da eliminação de junção (se sua consulta contiver JOINs com várias tabelas) ou apenas que as colunas adicionais que você está solicitando não existem em seus índices existentes atualmente ...