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

SQL Server:テーブル値関数とストアドプロシージャ

    インラインテーブル値関数(TVF)はマクロのようなもので、外部クエリに展開されます。そのような計画はありません。呼び出し元のSQLには計画があります。

    マルチステートメントTVFには計画があります(参照が見つかります)。

    TVFは、パラメーター化された入力のSELECTリストを変更する場合に役立ちます。インラインTVFが拡張され、オプティマイザーによって外側の選択/場所が考慮されます。マルチステートメントTVFの場合、完全に実行する必要があるため、最適化は実際には不可能です。その後 フィルタ。

    個人的には、マルチステートメントTVFでストアドプロシージャを使用します。それらはより柔軟性があります(たとえば、ヒント、状態を変更できる、SET NOCOUNT ON、SET XACTABORTなど)。

    インラインTVFには異論はありませんが、SETを使用して状態を変更できないため、クライアント向けのコードに使用する傾向はありません。



    1. postgres列Xは存在しません

    2. グループごとのauto_increment

    3. 下位バージョンでのSQLServerデータベースのバックアップの復元

    4. RAMを考慮したURLまたはハッシュのインデックス