Yanıtlar:
En iyi açıklama , yanılmıyorsam algoritmanın yazarı olan Tom Lane'den geliyor . Ayrıca wikipedia makalesine bakın .
Kısacası, biraz sıra taraması gibidir. Aradaki fark, her disk sayfasını ziyaret etmek yerine, bir bitmap dizininin VE ve VEYA ilgili dizinleri birlikte taraması ve yalnızca ihtiyaç duyduğu disk sayfalarını ziyaret etmesidir.
Bu, dizinin sırayla sırayla ziyaret edildiği bir dizin taramasından farklıdır - yani bir disk sayfası birden çok kez ziyaret edilebilir.
Re: Yorumunuzdaki soru ... Evet, aynen öyle.
Bir dizin taraması, sıraları tek tek geçecek, disk sayfalarını gerektiği kadar tekrar tekrar açacaktır (bazıları elbette hafızada kalacak, ama sen anladın).
Bir bitmap dizin taraması, sırayla disk sayfalarının kısa bir listesini açar ve her birindeki uygulanabilir her satırı alır (bu nedenle sorgu planlarında gördüğünüz sözde yeniden kontrol koşulu).
Bir kenara, kümeleme / satır sırasının her iki yöntemle ilişkili maliyetleri nasıl etkilediğine dikkat edin. Satırlar rastgele bir sırayla her yerde bulunuyorsa, bitmap dizini daha ucuz olacaktır. (Ve aslında, eğer gerçekten her yerde iseler , bir seq taraması en ucuz olacaktır, çünkü bir bitmap indeks taraması biraz ek yüke sahip değildir.)
index-only scan
sorguda yalnızca indekslenmiş sütuna erişildiği zaman vardır . bu durumda, index-only scan
yığın (veri sayfası) verilerine erişmesi gerekmez: postgresql.org/docs/12/indexes-index-only-scans.html