PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Plan de requête de postgres avec index

Ce forfait :

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)

Signifie en gros :

  1. Utilisation de l'index Designation_place_name
  2. Rechercher les lignes qui correspondent à la condition d'index relation ='Manager'
  3. Conserver uniquement les lignes qui correspondent aux critères timeOfJoining

Au cours de l'étape 2, les pages du disque sont accédées "au hasard", plutôt que séquentiellement, c'est-à-dire que l'index contient l'adresse des lignes correspondantes sur le disque, et Postgres visite ces adresses dans l'ordre indiqué par l'index. (Cela peut être coûteux, d'ailleurs. Parfois, le planificateur décidera qu'il est moins cher de simplement lire la table entière (seq scan) ou de récupérer par lots toutes les lignes d'une page tout en ignorant l'ordre indiqué par l'index (bitmap index scan).) /P>

Remarque :il n'y a pas de jointure (de table) dans cette requête. S'il y en avait eu un, vous auriez vu des niveaux d'indentation supplémentaires. Lisez-les du plus indenté au moins indenté.