「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > テーブル値パラメーターは、SQLストアドプロシージャのパフォーマンスとコードのシンプルさをどのように改善できますか?

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

2025-02-26に投稿されました
ブラウズ:543

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

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

特定のレコードに関連付けられている複数のアイテムをデータベーステーブルに分離するシナリオは、データ操作における一般的な課題。従来のアプローチには、パラメーター値を反復的に渡すか、文字列操作を使用しますが、より効率的なソリューションが利用可能です。 2008は、構造化されたデータのコレクションをパラメーターとしてストアドプロシージャに渡すことを可能にするテーブル値パラメーターを導入しました。これにより、複雑な文字列操作または反復パラメーター処理の必要性が排除されます。 ( @ReportID int、 @items as ItemList-ユーザー定義のテーブルタイプ )) として 始める ReportItem(ReportID、ItemID)に挿入 @ReportIDを選択してください、 id @itemsから end

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

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

createタイプタイプテーブルとしてアイテムリスト ( id int )

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
c#

from c#codeのテーブル値パラメーターをパスすると、カスタムテーブルタイプのインスタンスを作成します:

var itemlist = new itemList(); itemlist.rows.add(1); itemlist.rows.add(2); itemlist.rows.add(3);

CREATE TYPE ItemList AS TABLE
(
  Id int
)

dbcommand.addinparameter(dbcommand、 "items"、dbtype.object、itemlist)) ;

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

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
データベースへの複数のラウンドトリップを回避することにより、パフォーマンスを向上させます。入力データを強く入力することにより。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3