Postgres може да използва неводещи колони в индекс на b-дърво, но в много по-малко ефективен режим.
Ако първата колона е много избирателна (само няколко реда на A ), тогава едва ли ще забележите разлика в производителността, тъй като и двата метода за достъп (дори последователно сканиране върху намаления набор) са евтини. Ударът на производителността нараства с броя на редовете на A .
За случая, който описвате, предлагам да създадете индекс на (A, C, B) или (C, A, B) (само се уверете, че B идва на последно място), за да оптимизирате производителността. По този начин получавате най-добра производителност за заявки за (A, B, C) и на (A, C) еднакви.
За разлика от последователността от колони в индекса, последователността от предикати в заявката няма значение.
Обсъдихме това много подробно на dba.SE:
Обърнете внимание, че го правине има значение дали водите с A, C или C, A за конкретния случай:
Има и някои други съображения, но вашият въпрос не съдържа всички уместни подробности.