Çok noktalı bir dizine sahip bir tablom var ve sorgularda maksimum performansı elde etmek için indekslerin uygun şekilde sıralanmasından şüphelerim var.
Senaryo:
PostgreSQL 8.4, yaklaşık bir milyon satırlık tablo
C1 sütunundaki değerler yaklaşık 100 farklı değere sahip olabilir . Değerlerin eşit dağıldığını varsayabiliriz, bu nedenle olası her değer için yaklaşık 10000 satırımız vardır.
Sütun c2 1000 farklı değere sahip olabilir . Her olası değer için 1000 satırımız var.
Veri ararken, koşul her zaman bu iki sütun için değerler içerir, böylece tablo c1 ve c2'yi birleştiren çok noktalı bir dizine sahiptir. Filtrelemek için yalnızca bir sütun kullanarak sorgularınız varsa, çok sütunlu bir dizinde sütunları doğru şekilde sıralamanın önemini okudum . Senaryomuzda durum bu değil.
Sorum şu:
Filtrelerden birinin daha küçük bir veri kümesi seçtiği gerçeği göz önüne alındığında, ilk endeks en seçici olanı ise (daha küçük bir kümeye izin veren) performansı arttırır mıyım? Başvurulan makaledeki grafikleri görene kadar bu soruyu hiç düşünmedim:
Multicolumn indeksleri hakkında referans alınan makaleden alınan görüntü .
Sorgular, filtreleme için iki sütundaki değerleri kullanır. Filtreleme için yalnızca bir sütun kullanarak hiçbir sorum yok. Hepsi şunlardır: WHERE c1=@ParameterA AND c2=@ParameterB
. Bunun gibi durumlar da var:WHERE c1 = "abc" AND c2 LIKE "ab%"