Временные таблицы в базе данных
Если ты когда-нибудь писал длинный SQL-запрос и в какой-то момент ловил себя на мысли:
«Я уже сам не понимаю, что здесь происходит» — поздравляю, ты подошёл к моменту, где появляются временные таблицы.
В канале Аналитика FM я часто разбираю такие ситуации — когда задача вроде решаема, но без нормальной структуры превращается в кашу.

Что такое временная таблица
Это обычная таблица…
только с одним отличием:
👉 она живёт временно и потом исчезает
Ты создаёшь её:
-
чтобы сохранить промежуточный результат
-
поработать с ним
-
и не засорять основную базу
Тебе нужно:
-
взять заказы
-
отфильтровать только оплаченные
-
посчитать выручку
-
добавить сегментацию пользователей
-
ещё пару условий сверху
Можно написать один огромный запрос.
А можно сделать по-другому:
-
Сначала собрать «чистые заказы»
-
Потом на их основе считать метрики
-
Потом добавлять бизнес-логику
И вот тут временные таблицы начинают играть.
Как это выглядит
CREATE TEMP TABLE temp_orders AS
SELECT *
FROM orders
WHERE status = ‘paid’;
Создаем промежуточный слой данных.
А потом работаем уже с ним.
SELECT user_id, SUM(amount)
FROM temp_orders
GROUP BY user_id;
Зачем это нужно
1️⃣ Разделить сложную логику
Вместо одного «монстра»:
-
ты разбиваешь задачу на шаги
-
каждый шаг понятен
-
легче дебажить
2️⃣ Переиспользовать результат
Если один и тот же кусок данных нужен несколько раз:
-
не нужно каждый раз пересчитывать
-
можно сохранить и использовать
3️⃣ Ускорить запросы
Иногда:
-
тяжёлый JOIN
-
сложная фильтрация
👉 выгодно посчитать один раз и сохранить результат
4️⃣ Не засорять базу
Если ты создашь обычную таблицу:
-
она останется
-
её надо потом удалять
-
она может мешать другим
Временная таблица:
-
живёт в рамках сессии
-
автоматически исчезает
Когда это особенно полезно
-
сложные аналитические расчёты
-
многоступенчатые преобразования данных
-
работа с «грязными» данными
-
отладка логики
Важный нюанс
Временные таблицы — это не единственный инструмент.
Есть ещё:
-
CTE (WITH)
-
подзапросы
Но:
👉 CTE — это «логика в одном запросе»
👉 временные таблицы — это «разбивка на реальные шаги»
Иногда CTE читается тяжело.
А временные таблицы дают ощущение «пайплайна».
Где часто ошибаются
-
создают временные таблицы без необходимости
-
забывают, что они завязаны на сессию
-
используют их там, где проще CTE
То есть это инструмент — не серебряная пуля.
Самая простая мысль
Временная таблица — это способ остановиться посередине запроса и зафиксировать результат
И иногда именно это спасает:
-
читаемость
-
производительность
-
и твои нервы
В канале Аналитика FM (клик 🙂 )я рассказываю про продуктовые метрики в разных бизнесах. В чем особенности и нюансы. Серия постов про средний чек уже готова.
Подписывайся, если интересно интересно разбираться в особенностях работы аналитика.

