Если мы создадим составной индекс для этих колонок и будем искать значение
Прямым текстом расписано в документации:
https://www.postgresql.org/docs/current/indexes-mu...
Решающий момент: какой именно индекс и под какие именно операторы.
Например,
where a = ?
одинаково успешно пойдёт по btree(a, b) и по btree(a), но не по btree(b,a) - поиск по btree выполняется в leftmost порядке.
А для, например, brin будет без разницы, будь то brin(a,b) или brin(b,a)
под where a > ? and b = ?
будет эффективен btree(b,a), а вот btree(a,b) - уже менее эффективен.