Respuestas:
La mejor explicación proviene de Tom Lane , que es el autor del algoritmo, a menos que me equivoque. Consulte también el artículo de wikipedia .
En resumen, es un poco como un escaneo secuencial. La diferencia es que, en lugar de visitar todas las páginas del disco, un índice de mapa de bits analiza los índices AND y OR de forma conjunta, y solo visita las páginas del disco que necesita.
Esto es diferente de un escaneo de índice, donde el índice se visita fila por fila en orden, lo que significa que una página de disco puede ser visitada varias veces.
Re: la pregunta en tu comentario ... Sí, eso es exactamente.
Un escaneo de índice recorrerá las filas una por una, abriendo páginas del disco una y otra vez, tantas veces como sea necesario (algunas, por supuesto, permanecerán en la memoria, pero entiendes el punto).
Un escaneo de índice de mapa de bits abrirá secuencialmente una lista corta de páginas de disco y tomará todas las filas aplicables en cada una (de ahí la llamada condición de verificación que se ve en los planes de consulta).
Tenga en cuenta, además, cómo la agrupación en clústeres / el orden de las filas afecta los costos asociados con cualquiera de los métodos. Si las filas están por todas partes en un orden aleatorio, un índice de mapa de bits será más barato. (Y, de hecho, si realmente están por todas partes, un escaneo seq será más barato, ya que un escaneo de índice de mapa de bits no está exento de gastos generales).
index-only scan
cuándo solo se accede a la columna indexada en la consulta. en este caso, index-only scan
no es necesario acceder a los datos del montón (página de datos): postgresql.org/docs/12/indexes-index-only-scans.html