Ao executar SET STATISTICS IO ON antes de executar uma consulta SQL, posso ter uma ideia do número de leituras lógicas executadas em cada índice após a conclusão da consulta.
Olhando para a exibição sys.dm_exec_requests, posso ter uma ideia do número de leituras lógicas (total) que foram executadas até agora para qualquer consulta em andamento.
Como posso ter uma ideia de quantas leituras lógicas foram realizadas em cada índice até agora para consultas em andamento?
Você pode ver algumas informações sobre os índices que estão em uso agora usando o DMV sys.dm_db_index_usage_stats . Um exemplo:
(exemplo de código do MSDN).
As colunas de leituras e gravações aumentarão assim que o índice específico for usado para coleta de dados.
Esta é uma ótima pergunta, que me fez pensar.
Ok, 2 isenções de responsabilidade. Em primeiro lugar, isso parece muito sujo e não acredito que não haja uma maneira melhor. Em segundo lugar, NÃO EXECUTE ISSO EM UM SERVIDOR DE PRODUÇÃO porque a) usa recursos não documentados eb) limpa o cache do buffer.
A premissa que criei é destruir o cache do buffer, encontrar os números de página do índice, executar a consulta e contar as páginas que foram gravadas de volta na memória.
O seguinte é como implementá-lo:
Acontece que a resposta é que você não pode encontrar leituras lógicas por índice executadas até agora em consultas em andamento.
É claro que a Microsoft rastreia essas informações para relatar as leituras lógicas após a conclusão da consulta, mas não há sinalizadores de rastreamento ou dmvs que ajudem a fornecer essas informações.
O número de varreduras/buscas executadas e o número de páginas na memória estão próximos da marca, mas não chegam a cortá-la.
Atualização No SQL Server 2014, você pode. Há um novo DMV sys.dm_exec_query_profiles