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

SQLの最適化:Xmlまたは区切り文字列

    4番目のオプションがあります-テーブル値パラメーター 、これにより、実際に値のテーブルをパラメータとしてsprocに渡し、通常のテーブル変数と同じように使用できます。 XML(またはCSV解析アプローチ)よりもこのアプローチの方が好きです

    さまざまなアプローチすべての間のパフォーマンスの数値を引用することはできませんが、それは私が試しているものです。実際のパフォーマンステストを行うことをお勧めします。

    編集:
    TVPについてもう少し。値をsprocに渡すには、SqlParameter(SqlDbType.Structured)を定義するだけです。この値は、任意のIEnumerable、DataTable、またはDbDataReaderソースに設定できます。したがって、おそらく、ある種のリスト/配列に値のリストがすでにあります。XMLまたはCSVに変換するために何もする必要はありません。

    これにより、sprocがより明確に、よりシンプルに、より保守しやすくなり、最終結果を達成するためのより自然な方法が提供されると思います。主なポイントの1つは、SQLがセットベース/ループではない/文字列以外の操作アクティビティで最高のパフォーマンスを発揮することです。

    渡された値の大きなセットで優れたパフォーマンスを発揮するとは限りません。ただし、小さなセット(最大1000)では問題ないはずです。



    1. PostgreSQLがこの単純な完全結合を実行できないのはなぜですか?

    2. MySQLスキーマをCoreDataデータモデルとしてXcodeにインポートする

    3. PHP-MySQLDBから取得したウルドゥー語のテキストを表示する

    4. 複数の行からのMySQL条件