Normalmente, é chamado de sniffing de parâmetro, e aqui está um excelente post sobre como lidar com isso:
Estou usando o Confio Ignite8 para obter essas informações e monitorar as esperas.
Eu tenho uma consulta que é executada com frequência e percebo que em alguns dias há um número extremamente alto de leituras lógicas incorridas, +300.000.000 para 91.000 execuções. Em um bom dia, as leituras lógicas são muito mais baixas, 18.000.000 para 94.000 execuções.
O plano de execução da consulta utiliza o índice clusterizado em busca e está abaixo.
StmtText | - Loops Aninhados (Junção Interna, REFERÊNCIAS EXTERIORES: ([f]. [ParentId])] | --Substituído Index Index Seek (OBJECT: ([StructuredFN]. [Dbo]. [Pasta]. [PK_Folders] AS [f]), SEEK: ([f]. [FolderId] = (8125)), ONDE :( [StructuredFN]. [Dbo]. [Folder]. [DealId] como [f]. [DealId] = (300)) ORDENDO PARA A FRENTE) | --Substituição de Índice Agrupado (OBJECT: ([StructuredFN]. [Dbo]. [Pasta]. [PK_Folders] AS [p]), SEEK: ([p]. [FolderId] = [StructuredFN]. [Dbo]). [Folder]. [ParentId] como [f]. [ParentId]), WHERE: ([StructuredFN]. [Dbo]. [Pasta]. [DealId] como [p]. [DealId] = (300)) ENCOMENDADO )
Saída de showstatistics io ... Tabela 'Pasta'. Contagem de varredura 0, leituras lógicas 4, leituras físicas 0, leitura em leitura 0, leituras lógicas lob 0, leitura física lob 0, leitura adiantada lê 0.
Alguma idéia de como solucionar problemas de onde vêm essas altas leituras lógicas em determinados dias e outras nada?
Normalmente, é chamado de sniffing de parâmetro, e aqui está um excelente post sobre como lidar com isso:
Tags sql-server