ホームページ > データベース > mysql チュートリアル > テーブル値パラメーターは SQL ストアド プロシージャのパフォーマンスとコードの単純さをどのように改善できるでしょうか?

テーブル値パラメーターは SQL ストアド プロシージャのパフォーマンスとコードの単純さをどのように改善できるでしょうか?

DDD
リリース: 2025-01-03 05:52:39
オリジナル
500 人が閲覧しました

How Can Table-Valued Parameters Improve SQL Stored Procedure Performance and Code Simplicity?

テーブル値パラメータ リストを SQL ストアド プロシージャに渡す

特定のレコードに関連付けられた複数の項目をデータベース テーブルに設定するシナリオは次のとおりです。データ操作における一般的な課題です。従来のアプローチには、パラメーター値を繰り返し渡すか、文字列操作を使用する必要がありますが、より効率的なソリューションが利用可能です。

解決策: SQL Server 2008 のテーブル値パラメーター

SQL Server 2008 では、構造化データのコレクションをパラメーターとしてストアド プロシージャに渡すことができるテーブル値パラメーターが導入されました。これにより、複雑な文字列操作や反復パラメータ処理の必要がなくなります。

提供されたコードでは、テーブル値パラメータを受け入れるように "AddItemsToReport" ストアド プロシージャを更新できます。

ALTER PROCEDURE AddItemsToReport
(
  @ReportId int,
  @Items AS ItemList -- User-defined table type
)
AS
BEGIN
  INSERT INTO ReportItem (ReportId, ItemId)
  SELECT  @ReportId,
            Id
  FROM    @Items
END
ログイン後にコピー

アイテム リストのカスタム テーブル タイプ

アイテム リストのカスタム テーブル タイプを作成するには、次の SQL ステートメント:

CREATE TYPE ItemList AS TABLE
(
  Id int
)
ログイン後にコピー

C# からテーブル値パラメーターを渡す

C# コードで、カスタム テーブル型のインスタンスを作成します:

var itemList = new ItemList();
itemList.Rows.Add(1);
itemList.Rows.Add(2);
itemList.Rows.Add(3);
ログイン後にコピー

次に、テーブル値パラメータを格納されたパラメータに渡します。プロシージャ:

dbCommand.AddInParameter(dbCommand, "Items", DbType.Object, itemList);
ログイン後にコピー

テーブル値パラメーターの利点

  • データベースへの複数の往復を回避することでパフォーマンスが向上しました。
  • 簡略化
  • 強力な型付けによるセキュリティの強化入力データ。

以上がテーブル値パラメーターは SQL ストアド プロシージャのパフォーマンスとコードの単純さをどのように改善できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート