2

2 つのテーブルを (UNION を使用して) 1 つに結合し、他のテーブルからデータを結合するシナリオがあります。

これは、VIEW または UDF/ユーザー定義関数のいずれかで実行できます。

データベースにはこれまでまったくビューがありませんが、全文検索などにはかなりの数の UDF があることを考えると、このシナリオでも UDF を使用して「クリーン」に保ちたいと思います。

ただし、これは完全に主観的なものであり、このシナリオで VIEW または UDF を使用するより客観的な理由があるかどうか疑問に思いました。

両方のクエリプランを比較しましたが、まったく同じであるため、どちらを使用してもパフォーマンスが低下したり、利点があるとは思いません。

どちらかを選択する他の理由はありますか、それとも問題ではありませんか?

4

2 に答える 2

5

私は常に洗練された順に機能を使用します。ビューは、パフォーマンス プロファイルとセキュリティ管理に関して比較的単純です。多分最初に使うと思います。

インラインのテーブル値 UDF について話していると思いますが、これはほぼ同じパフォーマンス特性を持ちます。UDF のセキュリティは少し異なり、代わりにトリガーを使用してビューで「挿入」を行うことはできません。UDF の利点は、パラメーターを強制的に提供できることです。これにより、使用パターンが期待どおりであることが保証されますが、ビューは基準なしで (おそらく誤って) 照会できます。

パラメータ化のためにUDFが必要になった場合は、それをビューの上に重ねることができます(コードの重複がないため)。オプティマイザーはビューとインラインTVFを適切に組み合わせることができるため、パフォーマンスに大きな影響はありません。成功しました。

于 2010-07-03T02:58:41.030 に答える
2

このシナリオをビューとして使用する利点の 1 つは、それらにインデックスを付けて「インデックス付きビュー」として使用することです。従来のビューとは異なり、物理ファイルが作成されるため、かなりの量の行がある場合にクエリが高速になります。これを使用することのまさに効果は、すべての行の結合と結合をバイパスすることであり、代わりに新しい行に対してのみそれらを構築します。

私たちの友人である Cade が示唆したように、UDF 内のビューを使用してクリーンな状態を維持することもできますが、それほど違いはありません。

お役に立てれば !

于 2010-07-03T03:53:54.103 に答える