Azureリレーショナル定義問題

Azure SQL DatabaseにおいてT-SQLのCTE(Common Table Expression)の主な利点はどれか?

A.CTEはサブクエリより常にパフォーマンスが向上する
✗ CTEとサブクエリはSQL Serverでは多くの場合同等の実行計画になる。常にパフォーマンスが向上するわけではない。
B.一時的な名前付き結果セット(WITH句)を定義。可読性向上・再帰CTEで階層処理も可能← 正解
✓ 正解。CTEはWITH句を使ってクエリ内で一時的な名前付き結果セットを定義する。サブクエリのネストを減らして可読性を向上させ、同一CTEを複数回参照できる。再帰CTE(WITH RECURSIVE)で組織の階層構造や部品表などの再帰的なデータ処理が可能。
C.CTEはビューと同じく永続的にデータベースに保存される
✗ CTEはクエリの実行スコープ内でのみ存在する一時的なもの。ビューのようにDBに永続保存されない。
D.CTEはインデックス付きビューと同等のパフォーマンス最適化を提供する
✗ インデックス付きビューはMaterializedな保存結果を持つ。CTEはそのような最適化を提供しない。

DP-900:Microsoft Azure Data Fundamentals の問題一覧