Когда это не подходит для использования производных таблиц?
-
01-10-2019 - |
Вопрос
Этот Так что пост Детали некоторые преимущества в производительности в отношении производных против временных таблиц.
Кроме характеристики, какие ситуации существуют, для которых производная таблица не подходит.
Один ответ на должность с примером будет полезен.
Решение
Я бы предпочел сделать самостоятельно присоединиться к на временном столе, чем полученный стол.
CREATE TEMPORARY TABLE foo AS SELECT ...;
SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;
По сравнению с использованием производной таблицы, где вы должны записать весь запрос дважды:
SELECT ...
FROM (SELECT ...)
JOIN (SELECT ...) ON ...conditions...;
Но другое решение должно использовать Общие таблицы выражения которые немного отличаются от производных таблиц:
WITH foo AS (SELECT ...)
SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;
При условии, что вы используете марку базы данных, которая поддерживает этот синтаксис (Microsoft, Oracle, IBM, PostgreSQL).
Другие советы
Область применения может быть одна. Я думаю, что таблицы TEMP могут быть доступны для других транзакций / процессов и т. Д. Полученные таблицы ограничены блоком, в котором они объявлены.
Если вам нужно получить доступ к данным во временной таблице в Несколько запросов Это может быть менее дорогое, чтобы не повторно генерировать данные TEMP:
CREATE TEMPORARY TABLE foo AS SELECT ...;
SELECT ... FROM foo WHERE ...conditions...;
-- sometime later
SELECT ... FROM foo WHERE ...different conditions...;