sql >> データベース >  >> RDS >> Sqlserver

CTEがカーソル/派生テーブル/サブクエリ/一時テーブルなどよりも優れているのはなぜですか?

    (非再帰的)CTEはカーソルを使用しません。これはセットベースのアプローチです。これは、カーソルを使用する場合との大きな違いです。しかし、それは一般的にカーソルを使用しない場合にも当てはまります。

    カーソルは、絶対に可能な限り避ける必要があります(私たち全員が知っていると確信しているため)。

    CTEは、派生テーブルを使用するよりも必ずしも優れているとは限りませんが、より理解しやすいTSQLコードにつながります。 CTEは、実際にはクエリまたはサブクエリの省略形です。一時的なビューに似たもの。

    CTEが最善のアプローチではない可能性がある状況は、クエリプランオプティマイザーがCTEの不正確な行の見積もりを取得する場合です。

    関連する質問:CTEを使用することの長所/短所は何ですか?




    1. Oracleストアドプロシージャ内でのテキストの検索

    2. MySQLをロックせずに選択する方法はありますか?

    3. MySQLで2つのテーブルを比較する方法

    4. 条件に基づいて、別のテーブルの列で列の値を更新します