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

Comment Bitmap Heap Scan et Index Scan sont-ils décidés ?

Combien de lignes avez-vous au total dans le tableau ? La décision est basée sur la proportion des lignes qui seront générées par le parcours d'index.

Si une proportion suffisamment élevée de la table doit être accédée, un balayage d'index bitmap est utilisé pour s'assurer que la plus grande partie possible de l'accès au disque est séquentielle. En revanche, un parcours d'index simple effectue un accès aléatoire page par page aux données de la table. (Et si la proportion de la table à laquelle il est prévu d'accéder est suffisamment élevée, l'index n'est pas du tout utilisé et l'intégralité des données de la table est chargée séquentiellement)

Un problème est que la projection du nombre de lignes de la table qui seront accessibles n'est qu'une estimation. Mais comme vous pouvez l'imaginer, 'IT%' est susceptible de correspondre à plus de 'ITQ%' (rappelez-vous que le suffixe ne fait pas partie de l'index scan, seulement le filtre final)