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

0
1304
views

Временная таблица SQL, также известная как temp table, — это таблица, которая создается и используется в контексте определенного сеанса или транзакции в системе управления базами данных (СУБД). Она предназначена для хранения временных данных, которые нужны на короткое время и не требуют постоянного хранения.

Временные таблицы создаются «на лету». Обычно они используются для выполнения сложных вычислений, хранения промежуточных результатов или манипулирования подмножествами данных во время выполнения запроса или серии запросов.

Каждая временная таблица имеет конкретную область видимости и срок службы. Она доступна только в рамках создавшего ее сеанса или транзакции и автоматически удаляется при их завершении или при явном удалении пользователем.

Временная природа таблиц делает их подходящими для управления преходящими данными, которые не нуждаются в сохранении после выполнения непосредственной задачи.

Временные таблицы в SQL обеспечивают удобный способ разбиения сложных задач на более мелкие и управляемые. Они позволяют разделить этапы обработки данных, что может повысить производительность, улучшить читаемость кода и упростить логику запросов.

Временные таблицы могут использоваться в различных СУБД, таких как MySQL, PostgreSQL, Oracle, SQL Server и других, хотя синтаксис и возможности могут несколько отличаться в разных реализациях.

Как создается временная таблица SQL

От редакции Techrocks: о том, как вообще создаются таблицы, читайте в статье «Как создать таблицу в SQL (примеры с PostgreSQL и MySQL)».

Чтобы создать временную таблицу, можно использовать инструкцию CREATE TABLE с ключевым словом TEMPORARY или TEMP перед именем таблицы. Вот пример на языке SQL:

CREATE TEMPORARY TABLE temp_table (
    id INT,
    name VARCHAR(50),
    age INT
);

Объяснение кода:

  1. Инструкция CREATE TEMPORARY TABLE используется для создания временной таблицы.
  2. temp_table — это имя, которое присваивается временной таблице. Имя можно выбрать любое.
  3. Внутри круглых скобок мы определяем столбцы временной таблицы.
  4. В данном примере временная таблица temp_table имеет три столбца: id типа INT, name типа VARCHAR(50) и age типа INT.
  5. При необходимости мы можем добавить дополнительные столбцы, указав их имена и типы данных.
  6. Временная таблица автоматически удаляется в конце сеанса или при завершении сеанса.

Примеры использования временных таблиц

Анализ подмножеств данных

Одним из распространенных случаев использования временных таблиц является анализ конкретных подмножеств данных.

Допустим, у нас есть большой набор данных, и мы хотим выполнить сложный анализ или вычисления на меньшей части этих данных. Для такого анализа можно создать временную таблицу, содержащую только необходимые строки и столбцы. Это позволит нам сосредоточиться на подмножестве данных, не изменяя исходный набор данных. После завершения анализа мы можем удалить временную таблицу.

Например:

-- Создать временную таблицу с подмножеством данных
CREATE TEMPORARY TABLE subset_data AS
SELECT column1, column2, column3
FROM original_table
WHERE condition;

-- Анализ подмножества данных
SELECT column1, AVG(column2) AS average_value
FROM subset_data
GROUP BY column1;

-- Удалить временную таблицу
DROP TABLE subset_data;

Повышение производительности запросов

Временные таблицы могут использоваться для оптимизации сложных или ресурсоемких запросов. Разбив сложный запрос на несколько этапов с помощью временных таблиц, мы можем повысить производительность запроса.

Такое повышение происходит за счет уменьшения объема данных, обрабатываемых на каждом этапе, или за счет предварительного вычисления промежуточных результатов.

Временные таблицы позволяют хранить и повторно использовать промежуточные результаты запроса, избегая лишних вычислений. Например:

-- Создать временную таблицу для хранения промежуточных результатов
CREATE TEMPORARY TABLE temp_results AS
SELECT column1, COUNT(*) AS count_value
FROM large_table
WHERE condition1
GROUP BY column1;

-- Использовать временную таблицу для оптимизации итогового запроса
SELECT column1, column2
FROM temp_results
WHERE count_value > 10
ORDER BY column1;

-- Удалить временную таблицу
DROP TABLE temp_results;

От редакции Techrocks: о том, как вообще делать запросы, читайте в статье «Запросы SQL: руководство для начинающих».

Подготовка и преобразование данных

Временные таблицы также полезны для подготовки и преобразования данных перед их загрузкой в постоянные таблицы.

Мы можем создать временную таблицу, импортировать данные из различных источников, очистить их, применить преобразования и проверить данные перед их вставкой в конечный пункт назначения.

Временные таблицы обеспечивают гибкий и эффективный способ обработки и манипулирования данными без изменения исходного набора. Например:

-- Создать временную таблицу для подготовки данных
CREATE TEMPORARY TABLE staging_table (
    id INT,
    name VARCHAR(50),
    quantity INT
);

-- Импортировать и преобразовать данные в подготовительную таблицу
INSERT INTO staging_table (id, name, quantity)
SELECT id, UPPER(name), quantity * 2
FROM external_source;

-- Валидация и манипуляции с данными в подготовительной таблице
UPDATE staging_table
SET quantity = 0
WHERE quantity < 0;

-- Вставить преобразованные данные в итоговую таблицу
INSERT INTO final_table (id, name, quantity)
SELECT id, name, quantity
FROM staging_table;

-- Удалить временную таблицу
DROP TABLE staging_table;

Чем отличаются временная и постоянная таблицы в SQL

КритерийВременная таблицаПостоянная таблица
Продолжительность жизниВременная таблица существует только в текущей сессии или при текущем соединенииСохраняется после завершения сессии или соединения
Сохранение данныхПосле завершения сеанса данные не сохраняютсяДанные хранятся постоянно
Место храненияВременное хранилище обычно располагается в памяти или пространстве для временного храненияПостоянное хранилище размещается на диске или в базе данных
ДоступностьВременная таблица доступна только для сессии или соединения, в которых созданаПостоянная таблица доступна для всех пользователей и соединений с соответствующими правами
Соглашение об именахИмена временных таблиц часто имеют префиксы в виде специальных символов или ключевых словИмена постоянных таблиц не имеют префиксов в виде специальных символов или ключевых слов
Удержание данныхДанные автоматически удаляются в конце сессии или при закрытии соединенияДанные хранятся до тех пор, пока не будут намеренно удалены или изменены
Индексы и связиВременные таблицы могут иметь индексы и связи, но они обычно временные (удаляются вместе с таблицей)Постоянные таблицы могут иметь индексы, связи и триггеры
Свойства транзакцийПо умолчанию временные таблицы не транзакционные, но это зависит от СУБДПостоянные таблицы участвуют в транзакциях и поддерживают свойства ACID

Заключение

Временные таблицы SQL являются ценным инструментом в деле управления базами данных и оптимизации запросов. Используя их на практике и экспериментируя, вы сможете найти инновационные способы использования временных таблиц и улучшить свои навыки работы с SQL.

Перевод статьи «SQL Temp Table – How to Create a Temporary SQL Table».

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here