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

Plano de consulta de postgres com índices


Este plano:
Index Scan using Designation_place_name on myTable  (cost=0.00..67701.36 rows=22043 width=27) (actual time=0.061..3.796 rows=3376 loops=1)
   Index Cond: ((relation)::text = 'Manager'::text)
   Filter: (timeOfJoining > '1930-10-10 00:00:00+05:53:20'::timestamp with time zone)
 Total runtime: 4.082 ms
(4 rows)

Basicamente significa:
  1. Usando o índice Designation_place_name
  2. Encontre linhas que se ajustem à relação de condição de índice ='Gerente'
  3. Mantenha apenas as linhas que correspondem aos critérios timeOfJoining

Durante a etapa 2, as páginas do disco são acessadas "aleatoriamente", em vez de sequencialmente, o que significa que o índice contém o endereço das linhas correspondentes no disco, e o Postgres visita esses endereços na ordem indicada pelo índice. (Isso pode ser caro, aliás. Às vezes, o planejador decidirá que é mais barato apenas ler a tabela inteira (varredura seq) ou buscar em lote todas as linhas em uma página, ignorando a ordem indicada pelo índice (varredura de índice de bitmap).)

Nota:não há junções (tabela) nessa consulta. Se houvesse um, você teria visto níveis extras de recuo. Leia-os do mais recuado para o menos recuado.