2016-04-29 7 views
1

共通テーブル式(CTE)テーブルと揮発性テーブルの違いを説明してください。TeradataのCTEと揮発性テーブルの差異

&揮発性テーブルと比較して正確にCTEが優れているSQLの一部として、揮発性のドロップテーブルを作成できますか?

+0

編集:Teradata Developer exchange(http://forums.teradata.com/forum/database/diff-between-cte-and-volatile-tables-in-teradata)からさらに詳しい情報を得ました – Satish

答えて

1

このような異なるオブジェクトであるため、ほとんど匹敵しません。

揮発性テーブルは、実際のデータを格納する実際のテーブルです。通常のテーブルのように作成されますが、VOLATILEキーワード(およびその他の問題点)が付いています。セッションとそれに格納されているすべてのデータは、セッションが終了すると消えます。

一方、CTEはビューに似ています。データは保存されません。あなたは、その中に定義されているものの中に立っているシンボルと考えることができます。例えば

:私達はちょうどそれの側にぶらぶらselect文のシンボル「myCTEを」アウト置き換えどこ

WITH CTE myCTE() 
SELECT * 
FROM (SELECT * FROM sometable WHERE id=3) myCTE 
WHERE myCTE.name in (SELECT max(name) FROM (SELECT * FROM sometable WHERE id=3) myCTE); 

WITH CTE myCTE (SELECT * FROM sometable WHERE id=3) 
SELECT * 
FROM myCTE 
WHERE myCTE.name in (SELECT max(name) FROM myCTE); 

はちょうど同じです。

したがって、よりうまくいくかを尋ねると、揮発性テーブルとCTEを使用しようとしている正確な状況を知らなくても、それに答える方法はありません。

覚えておくと、揮発性テーブルを作成し、照会する前にデータをロードする必要があります。 CTEは単なるビューなので、揮発性テーブルを作成、ロード、クエリするよりもCTEをクエリする方が時間がかかる場合は、CTEを参照してください。プロシージャー内で繰り返し同じデータセットを何度も繰り返し実行する場合、そのデータセットを一時的に保存する場所が必要な場合は、揮発性テーブルを使用してください。

+0

こんにちはNevill、ありがとうございますレスポンス、あなたは私がSQL部分でCTEを参照するたびにSQL全体が再実行されることを私に明確にしてもらえますか? – Satish

+0

かなり、はい。再び、どのように実行されるかをより良く理解するために、定義されているもののcte名/エイリアスを除外することができます。実際には、コードの可読性とコードのメンテナンスのためだけです。 – JNevill

関連する問題