PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Em que cardinalidade o SQL Server alterna para uma verificação de índice (vs. busca)


Em termos de SQL Server, isso foi referido como o ponto de inflexão, do qual a postagem do blog de Kimberley é uma boa leitura. http://www.sqlskills.com/BLOGS/KIMBERLY /category/The-Tipping-Point.aspx

O ponto de inflexão é uma diretriz de 25% a 33% do número total de páginas na tabela, expresso em linhas, por exemplo, 10k páginas de dados dariam um ponto de inflexão de 2500-3333 linhas. Como diretrizes, isso é muito bom, e tão bom quanto você obterá - lembre-se de que o mecanismo do plano de consulta é uma caixa preta e, embora forneça um plano de consulta, ele apenas diz o que decidiu, não o porquê.

No entanto, em termos de inclinação de um índice de cobertura, isso não é muito fácil, mesmo com 100% dos dados sendo selecionados, um índice de cobertura ainda buscará a varredura na maioria dos casos.

Isso faz sentido, se você considerar que o otimizador de custos não atribui nenhum custo real à hierarquia das páginas de índice, apenas custa o acesso às páginas de folha do índice. Nesse ponto, escanear ou buscar 100% de um índice de cobertura custa o mesmo.

Eu encontrei a partir de minha própria experimentação (http://sqlfascination.com/2009/11/07/can-a-covering-nc-index-be-tipped ) usando uma cláusula between faria com que ela fosse examinada, mas outras cláusulas where não - pelo que eu poderia dizer, era puramente para a rota através do mecanismo de consulta.