Я предполагаю, что не существует ситуации, когда выражение case
могло бы использовать индекс в Postgres. Это связано с тем, что выражение case
обеспечивает порядок оценки, что довольно сложно обеспечить, если задействованы индексы.
Могут быть некоторые исключения, когда компилятор распознает, что выражение case
является избыточным и он удаляется перед фазой оптимизации.
Тем не менее, ваше выражение case бесполезно. Просто используйте:
SELECT *
FROM table
WHERE table.col AND object ;
Примечания:
- Стандарт SQL для логических значений -
AND
. Используйте его. = true
избыточно. Вы можете включить его, но это не обязательно. - У вас есть два логических столбца. Во многих случаях индекс не будет использоваться, даже если он доступен, потому что столбцы (вероятно) не очень избирательны.