PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie wird Bitmap Heap Scan und Index Scan entschieden?

Wie viele Zeilen hast du insgesamt in der Tabelle? Die Entscheidung basiert darauf, welcher Anteil der Zeilen vom Index-Scan ausgegeben wird.

Wenn auf einen ausreichend großen Teil der Tabelle zugegriffen werden soll, wird ein Bitmap-Index-Scan verwendet, um sicherzustellen, dass so viel Plattenzugriff wie möglich sequentiell erfolgt. Im Gegensatz dazu greift ein einfacher Index-Scan seitenweise wahlfrei auf die Tabellendaten zu. (Und wenn der prognostizierte Anteil der Tabelle, auf den zugegriffen werden soll, hoch genug ist, wird der Index überhaupt nicht verwendet und die gesamten Tabellendaten werden sequentiell geladen)

Ein Problem besteht darin, dass die Prognose, auf wie viele Zeilen aus der Tabelle zugegriffen wird, nur eine Schätzung ist. Aber wie Sie sich vorstellen können, stimmt „IT%“ wahrscheinlich häufiger als „ITQ%“ (denken Sie daran, dass das Suffix nicht Teil des Index-Scans ist, sondern nur der Endfilter)