Mam tabelę z indeksem wielokolumnowym i mam wątpliwości co do właściwego sortowania indeksów, aby uzyskać maksymalną wydajność zapytań.
Scenariusz:
PostgreSQL 8.4, tabela z około milionem wierszy
Wartości w kolumnie c1 mogą mieć około 100 różnych wartości . Możemy założyć, że wartości są równomiernie rozłożone, więc mamy około 10000 wierszy na każdą możliwą wartość.
Kolumna c2 może mieć 1000 różnych wartości . Mamy 1000 wierszy dla każdej możliwej wartości.
Podczas wyszukiwania danych warunek zawsze zawiera wartości dla tych dwóch kolumn, więc tabela ma indeks wielokolumnowy łączący c1 i c2. Czytałem o tym, jak ważne jest prawidłowe uporządkowanie kolumn w indeksie wielokolumnowym, jeśli masz zapytania wykorzystujące tylko jedną kolumnę do filtrowania. W naszym scenariuszu tak nie jest.
Moje pytanie brzmi:
Biorąc pod uwagę fakt, że jeden z filtrów wybiera znacznie mniejszy zestaw danych, czy mogę poprawić wydajność, jeśli pierwszy indeks jest najbardziej selektywny (ten, który pozwala na mniejszy zestaw)? Nigdy nie zastanawiałem się nad tym pytaniem, dopóki nie zobaczyłem grafiki z przywoływanego artykułu:
Zdjęcie pochodzi z przywoływanego artykułu o indeksach wielokolumnowych .
W zapytaniach do filtrowania są używane wartości z dwóch kolumn. Nie mam zapytań używających tylko jednej kolumny do filtrowania. Wszystkie z nich są: WHERE c1=@ParameterA AND c2=@ParameterB
. Istnieją również takie warunki:WHERE c1 = "abc" AND c2 LIKE "ab%"