Когда это не подходит для использования производных таблиц?

StackOverflow https://stackoverflow.com/questions/3151220

  •  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...;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top