Ответ 1
Нет, вы можете индексировать логическое поле, если вы будете его фильтровать. Это вполне разумная вещь, хотя, как и во всех индексах, PostgreSQL может отказаться игнорировать ее, если она не исключит достаточную таблицу - сканирование индекса плюс тонна выборки строк может быть дороже, чем последовательное сканирование - - который может или не может повлиять на вас в зависимости от значений в этом столбце.
Вы также должны знать, что PostgreSQL позволяет помещать условия в индексы, которые я часто нахожу полезными с булевыми полями. (Подробнее см. Частичные индексы.) Если вы будете обычно фильтровать или сортировать в пределах этой области, вам может быть лучше всего что-то вроде CREATE INDEX ... ON table (some_field) WHERE boolean_field
.