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:
- Utilizzo dell'indice Designation_place_name
- Trova le righe che soddisfano la relazione della condizione dell'indice ='Manager'
- 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.