2017-09-26 35 views
0

仮題では、WITH句&一時テーブルの主な違いは何ですか?WITH句と一時テーブルの違いは何ですか?

どのシナリオでは、どちらか一方を使用する方が良いでしょうか?

+0

主な相違点:with句は、関連するクエリで直接使用する必要があります。テンポラリテーブルでは、セッション中にテンポラリテーブルを使用できます。だから、彼らの寿命は異なります。 –

答えて

2

WITH句は、一般に、HAVINGなどの複雑な句を含む2つのサブクエリに対していくつかの結合を実行する必要がある場合に選択クエリで使用されます(必ずしもそうではありません)。一般にWITHと記載されている句は、SELECTステートメントでのみ使用できます。

しかし、データを操作する必要がある場合、ある条件でデータを変更したい場合や、複雑な条件によっては再度TEMP TABLEとしたい行を削除したい場合もあります。ほとんどのケースはWITHによって実現されますが、これは一般的に複雑なロジックを必要とします。TEMPテーブルでは、同じように2つの異なるSQL文を使用できます。あなたはS3からのデータのトンをロードしたい場合にも、TEMPテーブルは、一般的にTEMPテーブルすなわちステージングテーブルではなく、SELECTクエリのビューとして使用されている

が使用されている、あなたは、一時テーブルにデータをロードする場合がありますデータを分析し、冗長性を除去し、最後に元のテーブルに一度にマージします。

TEMPテーブルは現在のセッションでのみ一時的ですが、WITHは常に再評価されます。

0

主な違いは、テンポラリテーブルがストアドテーブルであることです。 CTEはビューに似ていて、SQLをより読みやすく、論理的に表現するのに役立ちます。同じ相違点が表とビューの間に適用されます。これは、表を使用するとパフォーマンスが向上する可能性があります。

非常に複雑なクエリを作成する場合や、段階的に作成する必要がある場合は、WITH句/ CTEを使用すると役立ちます。しかし、パフォーマンスを向上させるためにテーブルにデータを格納する場合は、一時テーブルを使用するのが最善の方法です。 同様に、テンポラリテーブルを何度も何度も使用することができます。そのため、複数のクエリで同じコードを使用していた場合は、CTEではなくテンポラリテーブルを考慮する必要があります。

関連する問題