PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Query Plan di postgres con indici

Questo piano:

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)

Fondamentalmente significa:

  1. Utilizzo dell'indice Designation_place_name
  2. Trova le righe che soddisfano la relazione della condizione dell'indice ='Manager'
  3. Mantieni solo le righe che corrispondono ai criteri timeOfJoining

Durante il passaggio 2, si accede alle pagine del disco "in modo casuale", anziché in sequenza, vale a dire che l'indice contiene l'indirizzo delle righe corrispondenti sul disco e Postgres visita questi indirizzi nell'ordine indicato dall'indice. (Questo può essere costoso, tra l'altro. A volte, il pianificatore deciderà che è più economico leggere l'intera tabella (scansione sequenziale) o recuperare in batch tutte le righe di una pagina ignorando l'ordine indicato dall'indice (scansione dell'indice bitmap).)

Nota:non ci sono join (tabella) in quella query. Se ce ne fosse stato uno, avresti visto livelli di rientro extra. Leggili dal più rientrato al meno rientrato.