Pergunta

Como posso comparar o desempenho de um índice em uma tabela usando o analisador de consulta?

Gostaria de executar a mesma consulta através do plano de execução estimado duas vezes, uma vez usando o índice e uma vez sem, e ter uma boa comparação das varreduras de tabela/Índice que são geradas.

Eu tentei criar um índice ..., selecionar ..., soltar Índice ..., selecione. Espero que a primeira consulta use o índice e o segundo para não ter índice, mas ambos os planos de execução usarão o índice.

Foi útil?

Solução 4

A técnica que acabou trabalhando para mim era usar a palavra -chave na cláusula de From.

Quando o índice é criado:

SELECT * FROM table WHERE ...

SELECT * FROM table WITH (INDEX(0)) WHERE ...

A primeira consulta (provavelmente) usará o índice, a segunda não. Você também pode usar vários índices como:

SELECT * FROM table WITH (INDEX(IX_test1)) WHERE ...

SELECT * FROM table WITH (INDEX(IX_test2)) WHERE ...

Outras dicas

Se não houver índice, ele não poderá ser usado. No entanto, o índice ainda existe para o plano de execução estimado para a segunda seleção, por isso é avaliado. O plano de índice de queda também é apenas uma estimativa também

De qualquer forma, eu usaria o plano de execução real, porque pessoalmente não gosto do estimado.

Você pode usar Defina o texto do showplan para capturar o que é realmente usado na janela de consulta (ou use o gráfico). Eu também usaria Definir estatísticas io e frequentemente Defina o tempo de estatística também.

Use o SQL Server Profiler em ferramentas de configuração. Execute suas consultas com e sem indexação e registre as leituras / grava de dados, etc. de suas chamadas de função. Isso deve dar uma idéia clara se seus índices tiveram um desempenho melhorado (menos leituras / latência etc.)

Use isso no início da janela de consulta. Isso vai limpar qualquer caches de plano.

dbcc freeproccache
go
dbcc dropcleanbuffers
go

Assim, faça isso no topo e, em seguida, coloque seu código de índice Dreat and Drop em um comentário e, em seguida, sua consulta. Execute -o inicialmente sem um índice e veja como ele se parece, crie o índice e execute -o.

E sim, use o plano de execução real e você também pode usar as estatísticas do cliente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top