派生テーブルを使用することはいつ適切ではありませんか?

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

  •  01-10-2019
  •  | 
  •  

質問

これ だから投稿してください 詳細は、派生テーブルと一時テーブルに関するパフォーマンスのいくつかの利点を示します。

パフォーマンス以外に、派生テーブルが適切ではない状況が存在します。

例を使用した投稿ごとに1つの回答が役立ちます。

役に立ちましたか?

解決

私はしたいと思います 自己結合 派生テーブルよりも一時的なテーブルに。

CREATE TEMPORARY TABLE foo AS SELECT ...;

SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;

派生テーブルを使用することに対して、クエリ全体を2回記述する必要があります。

SELECT ... 
FROM (SELECT ...)
JOIN (SELECT ...) ON ...conditions...;

しかし、別の解決策は使用することです 一般的なテーブル式 派生テーブルとはわずかに異なります。

WITH foo AS (SELECT ...)
SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;

この構文(Microsoft、Oracle、IBM、PostgreSQL)をサポートするデータベースのブランドを使用すると。

他のヒント

スコープは1つかもしれません。温度テーブルは、他のトランザクション /プロセスなどがアクセスできるようにすることができると思います。派生テーブルは、それらが宣言されているブロックに限定されています。

一時テーブルのデータにアクセスする必要がある場合 複数のクエリ 一時的なデータの生成を繰り返し避けないでください。

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