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

CTE からの予期しない結果

    あなたがそれを理解していない場合を除いて、その結果について予期しないことは何もありません.

    各 CTE は each and every time 解決されます 参照されます。はい、これが、非常にトランザクションの多いテーブルの単純な CTE が、1 つの参照で 4 行を返し、次の 2 レベル下で 5 行を返す可能性がある理由です。

    ただし、サンプルでは、​​ORDER BY NEWID() が原因で、元の CTE の各解像度に異なる row_number()-ing を与えます。 CTE はメモリに保存され、キャッシュされると思いましたか? SQLFiddle サイトの結果の下に、「実行計画の表示」リンクがあります。 テーブルの 2 つの異なる別々のスキャンを示しています .




    1. Oracleの複数更新クエリ

    2. 列から一意の値を選択する

    3. 文字列の一部を、相互参照一時テーブルの大文字の同等のものに置き換えます-tsql

    4. PHPとMySQL:返された行数