タグ付けされた質問 「table-variable」

2
TVPを読み取り専用にする必要がある理由、および他のタイプのパラメーターを読み取り専用にできない理由
このブログによると、関数またはストアドプロシージャのOUTPUTパラメーターは、パラメーターでない場合は本質的に値渡しであり、パラメーターである場合は本質的に参照渡しの安全なバージョンとして扱われOUTPUTます。 最初は、TVPの宣言を強制する目標は、TVPをパラメーターREADONLYとして使用できないことを開発者に明確に知らせることであると考えましたが、OUTPUT非TVPをとして宣言できないため、さらに処理が必要READONLYです。たとえば、次は失敗します。 create procedure [dbo].[test] @a int readonly as select @a メッセージ346、レベル15、状態1、プロシージャテスト パラメーター "@a"はテーブル値パラメーターではないため、READONLYとして宣言できません。 以来統計が保存されていない TVPにDML操作を防止することの理論的根拠は何ですか? OUTPUT何らかの理由でTVPをパラメーターにしたくないことに関連していますか?

3
DBテーブルでのSPIDの使用(テーブル変数の代わり)
予約に使用されるトランザクションデータベース... 私たちのベンダーは、#temptablesを@tablevariablesに置き換えるように依頼されました(コンパイルロックが重いため)。代わりに、SPIDを列として追加する実際のテーブルに置き換えて、ストアドプロシージャが適切な行でのみ機能するようにしました。 この操作方法にリスクはありますか?すべてのトランザクションが独自のトランザクション内に分離される前に...このテーブルを大量にロックしてしまうのではないかと心配しましたが、SQLは行レベルのロックを使用しているため、これ以上のロックは作成されないというのが彼らの意見です。 SQL Serverバージョン:2016 Enterprise-13.0.5216.0 CREATE TABLE dbo.qryTransactions ( ID int IDENTITY (0,1) NOT NULL CONSTRAINT pk_qryTransactions PRIMARY KEY CLUSTERED, spid int NOT NULL, OrderID int, ItemID int, TimeTransactionStart datetime, TimeTransactionEnd datetime, ...other fields ) CREATE INDEX idx_qryTransactions_spidID ON qryTransactions (spid, ID) INCLUDE (ItemID, OrderID, TimeTransactionStart, TimeTransactionEnd)

1
この状況で、テーブル変数がクエリのパフォーマンスをどのように向上させているのですか?
この特定のケースでは、以下で説明しようとしますが、テーブル変数を使用すると、テーブル変数を使用しない場合よりもパフォーマンスが向上します。 理由を知りたいのですが、可能であれば、テーブル変数を削除します。 これは、テーブル変数を使用したクエリです。 USE [BISource_UAT] GO set statistics io on SET STATISTICS TIME ON SET NOCOUNT ON; DECLARE @OrderStartDate DATETIME = '15-feb-2015' DECLARE @OrderEndDate DATETIME = '28-feb-2016' DECLARE @tmp TABLE ( strBxOrderNo VARCHAR(20) ,sintReturnId INT ) INSERT INTO @tmp SELECT strBxOrderNo ,sintReturnId FROM TABLEBACKUPS.dbo.tblBReturnHistory rh WHERE rh.sintReturnStatusId in ( 3 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.