質問

私はあまりにも長い間 SQL2000 にこだわってきたため、共通テーブル式についてはあまり触れてきませんでした。

私が出した答え ここ (#4025380) そして ここ (#4018793) 彼らはCTEを使用しなかったという点で流れに逆行しました。

再帰に関しては、これらが非常に便利であり、それらを使用することで大幅に簡素化できるクエリがいくつかあることは理解していますが、どの時点でそれらの使用が単なる軽薄なものになるのでしょうか?サブクエリや結合に比べてパフォーマンスに大きなメリットがありますか?本当にコードが簡素化され、保守しやすくなっているのでしょうか?

つまり、「より軽い」構文ではなく CTE を使用することが適切な場合は次のとおりです。

役に立ちましたか?

解決

次の場合は通常、通常のサブクエリではなく CTE を使用する必要があります。

  • クエリには再帰が必要です(あなたが指摘したように)
  • サブクエリが大きいか複雑です
  • 含まれているクエリが大きいか複雑です
  • サブクエリが繰り返されます (または、共通のサブクエリに対してさまざまな単純な操作を実行することで、少なくともいくつかのサブクエリを簡素化できます)。

つまり、うまく使用するとクエリが読みやすくなります。

他のヒント

これは、階層的/再帰的な問い合わせを除いて、シンタックスシュガーです。

ただし、再帰的に行うことができますすべてがあるべきではない - 日付世代再帰CTEを経由してやっと良くカーソルを超えました - 番号表のトリックがはるかに優れたスケール

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top