私はカップルパラメータを持つストアドプロシージャを持っています。私のデータテーブルタイプは2列(int, nvarchar
)です。SqlDataRecordsをプロシージャに渡すと、9回以上実行するのが遅くなりますか?
このストアドプロシージャを実行し、IEnumerable<SqlDataRecords>
に定義された型を渡すと、自分のマシン上のクエリ結果は、このパラメータを渡さずに同じストアドプロシージャよりも9倍遅くなります。
ストアドプロシージャはこのパラメータには触れません。渡すだけ。
構造化された(テーブル値の)値として渡されるデータでは、何か(SQL Server?)のように見えます。
多分私は何かを逃しています。
- :多分に特別なスイッチがありますか?
タイプ:
CREATE TYPE dbo.MyData AS TABLE
(
[Ver] INT NOT NULL,
[Name] NVARCHAR(225) NOT NULL
)
ストアドプロシージャ:
CREATE PROCEDURE [dbo].[SaveData]
(@Id UNIQUEIDENTIFIER, @Data MyData READONLY)
AS
BEGIN
SET NOCOUNT ON;
END
UPDATE 1:
私は、クエリを変更しました。このストアドプロシージャは何もしません。差は渡す値またはヌルです。
UPDATE 2:
追加されたストアド・プロシージャおよびタイプ定義。
UPDATE 3:
私は、SQL Server 2014のExpressを使用しています。
UPDATE 4:パラメータと
5000反復テーブル値PARAMことなく、11281ms(443 /秒)かかり - 1029ms(4856 /秒)。
は、あなたのSPROCを投稿し、あなたが – mxmissile
表情を渡す方法は不明のために最適化@JoelCoehoorn? –
不明のための最適化に 'IEnumerable' – dariol