Временные таблицы в базе данных

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

В канале Аналитика FM я часто разбираю такие ситуации - когда задача вроде решаема, но без нормальной структуры превращается в кашу.

Временные таблицы в базе данных

Что такое временная таблица

Это обычная таблица…только с одним отличием:

👉 она живёт временно и потом исчезает

Ты создаёшь её:

  • чтобы сохранить промежуточный результат
  • поработать с ним
  • и не засорять основную базу

Тебе нужно:

  • взять заказы
  • отфильтровать только оплаченные
  • посчитать выручку
  • добавить сегментацию пользователей
  • ещё пару условий сверху

Можно написать один огромный запрос.

А можно сделать по-другому:

  1. Сначала собрать "чистые заказы"
  2. Потом на их основе считать метрики
  3. Потом добавлять бизнес-логику

И вот тут временные таблицы начинают играть.

Как это выглядит

CREATE TEMP TABLE temp_orders AS SELECT * FROM orders WHERE status = 'paid';

Зачем это нужно

1 Разделить сложную логику

Вместо одного "монстра":

  • ты разбиваешь задачу на шаги
  • каждый шаг понятен
  • легче дебажить

2 Переиспользовать результат

Если один и тот же кусок данных нужен несколько раз:

  • не нужно каждый раз пересчитывать
  • можно сохранить и использовать

3 Ускорить запросы

Иногда:

  • тяжёлый JOIN
  • сложная фильтрация

👉 выгодно посчитать один раз и сохранить результат

4 Не засорять базу

Если ты создашь обычную таблицу:

  • она останется
  • её надо потом удалять
  • она может мешать другим

Временная таблица:

  • живёт в рамках сессии
  • автоматически исчезает

Когда это особенно полезно

  • сложные аналитические расчёты
  • многоступенчатые преобразования данных
  • работа с "грязными" данными
  • отладка логики

Важный нюанс

Временные таблицы - это не единственный инструмент.

Есть ещё:

  • CTE (WITH)
  • подзапросы

Но:

👉 CTE - это "логика в одном запросе"👉 временные таблицы - это "разбивка на реальные шаги"

Иногда CTE читается тяжело.А временные таблицы дают ощущение "пайплайна".

Где часто ошибаются

  • создают временные таблицы без необходимости
  • забывают, что они завязаны на сессию
  • используют их там, где проще CTE

То есть это инструмент - не серебряная пуля.

Самая простая мысль

Временная таблица - это способ остановиться посередине запроса и зафиксировать результат

И иногда именно это спасает:

  • читаемость
  • производительность
  • и твои нервы

В канале Аналитика FM (клик :-) )я рассказываю про продуктовые метрики в разных бизнесах. В чем особенности и нюансы. Серия постов про средний чек уже готова.

Подписывайся, если интересно интересно разбираться в особенностях работы аналитика.

Начать дискуссию