sql >> Base de Datos >  >> RDS >> PostgreSQL

Query Plan de postgres con índices.

Este plan:

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)

Básicamente significa:

  1. Uso del índice Designation_place_name
  2. Encuentre filas que se ajusten a la relación de condición de índice ='Administrador'
  3. Mantenga solo las filas que coincidan con los criterios de timeOfJoining

Durante el paso 2, se accede a las páginas del disco "al azar", en lugar de secuencialmente, lo que significa que el índice contiene la dirección de las filas coincidentes en el disco y Postgres visita estas direcciones en el orden indicado por el índice. (Esto puede ser costoso, por cierto. A veces, el planificador decidirá que es más barato simplemente leer la tabla completa (escaneo secuencial) o buscar por lotes todas las filas en una página ignorando el orden indicado por el índice (escaneo de índice de mapa de bits).)

Nota:no hay uniones (tabla) en esa consulta. Si hubiera habido uno, habría visto niveles de sangría adicionales. Léalos de mayor a menor sangría.