
Комментарии 3
WITH random_period AS (
SELECT
book_date AS start_date,
book_date + INTERVAL '30 days' AS end_date
FROM bookings
ORDER BY RANDOM()
LIMIT 1
)Запихните в переменные @start_date и @end_date, прежде чем выполнять запрос и проверьте себя еще раз.
Кажется что индексы по временной таблице не используются, в плане стоит scan. Был ли смысл их создавать? Время и ресурсы измерялись с создание temp таблицы?
С временной таблицей есть одна очень существенная особенность - размер таблицы случаен. При каждом вызове - разный. Это условие эксперимента.
Поэтому вполне вероятно, для данного вызова
индексы по временной таблице не используются, в плане стоит scan.
По поводу:
Был ли смысл их создавать?
Наверное в некоторых случаях , когда временная таблица получается большой смысл и есть.
Время и ресурсы измерялись с создание temp таблицы?
Такой задачи не ставилось . И вряд ли будет отдельный эксперимент на эту тему.
В принципе - кому интересно - pg_expecto в github есть, демобаза 2.0 в github есть. Welcome.
У меня план экспериментов до конца года. К данной теме не буду возвращаться. Тем более после публикации итогов.
Анализ вариантов оптимизации ресурсоёмкого SQL-запроса: Вариант-4 «Временная таблица»