[解決済み] 表形式関数(TVF)とビューの比較
2023-05-23 15:34:21
質問
テーブル値関数とビューの違いは何ですか?1でできることで、もう1では難しい、あるいは不可能なことがあるのでしょうか?それとも、違いは効率性にあるのでしょうか?
どのように解決するのですか?
パラメータレスインラインTVFと非マテリアライズドViewは非常によく似ています。思い浮かぶいくつかの機能的な違いは以下のとおりです。
ビュー
Accepts Parameters - No
Expanded out by Optimiser - Yes
Can be Materialized in advance - Yes (through indexed views)
Is Updatable - Yes
Can contain Multiple Statements - No
Can have triggers - Yes
Can use side-effecting operator - Yes
インラインTVF
Accepts Parameters - Yes
Expanded out by Optimiser - Yes
Can be Materialized in advance - No
Is Updatable - Yes
Can contain Multiple Statements - No
Can have triggers - No
Can use side-effecting operator - No
マルチステートメントTVF
Accepts Parameters - Yes
Expanded out by Optimiser - No
Can be Materialized in advance - No
Is Updatable - No
Can contain Multiple Statements - Yes
Can have triggers - No
Can use side-effecting operator - No
実行時、ビューとインラインTVFは両方ともインライン化され、派生テーブルやCTEと同様に扱われます。それらは全体が評価されないかもしれません(場合によっては全く評価されないかもしれません)。 または複数回評価される場合もあります。 . マルチステートメントTVFは常に評価され、リターンテーブルタイプ(基本的にテーブル変数)に保存されます。
時には、インラインTVFを直接パラメータ化する機能は、ビューに対する同等のパラメータ化されたクエリよりも良い実行計画を導くことができます。
関連
-
[解決済み] シンプルに保つ、クエリで複数のCTEを行う方法
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み] クラスター化インデックスと非クラスター化インデックスの実際の意味は何ですか?
-
[解決済み] INNER JOINよりもCROSS APPLYを使用すべきなのはどのような場合ですか?
-
[解決済み] SQL Serverにおける関数とストアドプロシージャの比較
-
[解決済み] SQL Serverでは、MONEYとDECIMAL(x,y)のどちらをデータ型として選択すべきでしょうか?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】マルチインデックスとマルチカラムインデックスの比較
-
[解決済み】複数ステートメントのテーブル型関数とインラインのテーブル型関数の比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】SQL Server データベース復元エラー:指定されたキャストは有効ではありません。(SqlManagerUI)
-
[解決済み] SQL Server xp_delete_file パラメータ
-
[解決済み] データベースのトランザクションログが満杯です。ログの領域が再利用できない理由を調べるには、sys.databases の log_reuse_wait_desc カラムを参照してください。
-
[解決済み] 階層テーブルの設計
-
[解決済み] SQL Agent を使用して SSIS パッケージを実行する際の問題 - "DTSER_FAILURE(1)" で失敗します。
-
[解決済み] Sqlサーバーに制約が存在するかどうかを確認する方法は?
-
[解決済み] SQL Server : ログインに成功しましたが、「データベース [dbName] にアクセスできません。(ObjectExplorer) "と表示されました。
-
[解決済み] テーブルの上位1レコードを更新する sql server [重複].
-
[解決済み] 日付から年内の週番号を取得する
-
[解決済み] CTEとテンポラリテーブル、どちらが高性能ですか?