Postgres może używać kolumn niebędących wiodącymi w indeksie b-drzewa, ale w znacznie mniej wydajnym trybie.
Jeśli pierwsza kolumna jest bardzo selektywna (tylko kilka wierszy na A ), wtedy prawie nie zauważysz różnicy w wydajności, ponieważ obie metody dostępu (nawet sekwencyjne skanowanie ograniczonego zestawu) są tanie. Trafienie wydajności rośnie wraz z liczbą wierszy przypadających na A .
W przypadku, który opisujesz, sugeruję utworzenie indeksu na (A, C, B) lub (C, A, B) (tylko upewnij się, że B jest ostatni), aby zoptymalizować wydajność. W ten sposób uzyskasz najlepszą wydajność dla zapytań na (A, B, C) i na (A, C) podobne.
W przeciwieństwie do sekwencji kolumn w indeksie, kolejność predykatów w zapytaniu nie ma znaczenia.
Szczegółowo omówiliśmy to na dba.SE:
Pamiętaj, że nie ma znaczenie, czy prowadzisz z A, C lub C, A dla rozpatrywanej sprawy:
Jest jeszcze kilka innych kwestii, ale Twoje pytanie nie zawiera wszystkich istotnych szczegółów.