t.column2 limit 1
Причем сортировка происходит не по индексированному полю. Судя по времени выполнения запроса, как я понимаю, функция в селекте выполняется до того, как выполнится сортировка и лимит, т.е. на каждую запись в таблице. Какими способами можно отложить выполнение функции на после лимита? На ум приходит только завернуть в подзапрос, есть ли еще варианты?
Вы план запроса посмотрите (EXPLAIN (ANALYZE, VERBOSE), например). И подзапрос Вам, скорее всего, не поможет, кстати (PostgreSQL всё равно может "протолкнуть" функцию внутрь).
CTE можно использовать. Но это тоже в некотором смысле подзапрос.
Обсуждают сегодня