Eu tenho tentado me livrar de pesquisas caras no meu plano de consulta, mas não consigo entender isso. Eu entendo a ideia de criar um índice de cobertura para eliminar a necessidade de pesquisas, mas não sei como abordá-lo com um plano complicado como este.
Quaisquer idéias sobre como abordar isso seriam realmente apreciadas.
O plano de consulta pode ser encontrado aqui: https://www.brentozar.com/pastetheplan/?id=HyBbQ0eRr
Obrigado
Portanto, um índice de cobertura é um índice que possui todas as colunas necessárias para sua consulta. Uma pesquisa de chave acontece quando o otimizador usa seu índice para obter dados, mas está faltando uma ou mais colunas, então ele as busca no índice clusterizado.
Por exemplo, você tem uma busca de índice em Table_22 com o índice table_22_promoId_Index. Depois, no plano, você vê que a pesquisa de chave buscou um monte de colunas.
Se você adicionar todas as colunas da sua lista de saída da pesquisa de chave em seu Table_22_PromoId_Index como colunas incluídas, você deixará de ter uma pesquisa de chave, porque agora ela apenas buscará tudo desse índice, sem precisar de informações extras do seu cluster índice
Então você pode repetir isso para os outros
Dê um passo de cada vez, escolha uma pesquisa e tente corrigi-la, depois vá para a próxima.
Além disso, como você está selecionando muitas colunas, tente lembrar que fazer índices enormes também tem desvantagens em atualizações/inserções e ocupa espaço de armazenamento, portanto, tome cuidado para não ter muitos índices (tudo depende de como seu caso específico.)
É também por isso que as pessoas o aconselham a selecionar apenas as colunas que você realmente precisa em vez de tudo, pois isso torna seus índices mais estreitos e fáceis de ajustar.
Uma leitura útil sobre este tópico : Pesquisas de chaves caras
Portanto, um predicado de busca e um predicado em uma pesquisa de chave são os mesmos que em sua busca de índice. O que acontece é que ele buscará os dados de seu índice clusterizado (no caso de um índice chave) usando o predicado Seek. Depois, se ele tiver que filtrar mais esses dados, ele usará o predicado para filtros extras.
Há uma boa resposta de Joe Obbish explicando muito bem: Diferença entre predicado de busca e predicado