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

¿Por qué PostgreSQL realiza un escaneo secuencial en la columna indexada?

Si SELECT devuelve más de aproximadamente el 5-10 % de todas las filas de la tabla, una exploración secuencial es mucho más rápida que una exploración de índice.

Esto se debe a que un escaneo de índice requiere varios Operaciones de E/S para cada fila (busque la fila en el índice y luego recupere la fila del montón). Mientras que un escaneo secuencial solo requiere un solo IO para cada fila, o incluso menos porque un bloque (página) en el disco contiene más de una fila, por lo que se puede obtener más de una fila con una sola operación de IO.

Por cierto:esto también es cierto para otros DBMS:se han dejado de lado algunas optimizaciones como "escaneos de solo índice" (pero para un SELECT * es muy poco probable que tal DBMS opte por un "escaneo de solo índice")