問題タブ [table-variable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server-2008 - テーブル変数と一時テーブルの大きなパフォーマンスの違い
がありUDF
、大量のデータを提供しています。いくつかのテーブル変数が使用されます。この時点では、インデックスは作成されません。
テストデータを使用した実行時間は約30 秒です。
テーブル変数を一時テーブルに変更するだけで (許可されUDF
て#tables
いないため、 以外)、実行時間が大幅に短縮されます。約3秒です。この記事では違いについて説明していますが、この種のパフォーマンス デルタの原因となっているポイントがわかりません。
とにかく、一時テーブルは許可されていないUDF
ので、SPROC
. 残念ながら、データのターゲット「コンテナー」はビューまたはテーブルでなければならないため、できません。サードパーティの制限により変更できません。(erp システムのデータは事前に処理されており、テーブルまたはビューで提供する必要があります。たとえば、select <col> from <object>
.
現在使用しているテーブル変数を作成するインデックスを追加してみましたが、実行時間は減りませんでした。
最後にビューにデータを取得しながら、一時テーブルのパフォーマンスを達成するためのヒントやヒントをいただければ幸いです。
SQL-Query (テーブル変数が追加されますが、デモ データは提供できません):
tsql - DECLARE ステートメントは変数をグローバルにしますか?
DECLARE ステートメントが宣言された変数をグローバルにするのはなぜですか?
例えば:
私に与えます:
すべての場合に何も返さないようにする必要がありますか?
.net - C# から SQL Server にテーブル変数を渡すと空のテーブルが渡される
C# (.NET 4.5、Visual Studio 2013) から proc を呼び出すと、sp_executesql を使用してテーブル変数が渡されます。ただし、SQL Server (2008 Std、2008 Ent、および 2012 Std でテスト済み) は、これを空のテーブルとして渡します。
ここにある 3 つのステートメントは同じ結果を返すと思いますが、最後のステートメントはそうではありません。
私にとっての明白な答えは、proc 内のテーブル変数で sp_executesql を使用しないことですが、この C# コードはまさにそれを行います。
あなたが私に与えることができるどんな助けでも大歓迎です. ありがとう!!!
mysql - INT のカンマ区切り文字列から一時テーブルを作成する
ここで、一時テーブルと WHILE 句を使用して調査結果を共有したいと思います。IN ステートメントで使用する INT のコンマ区切り文字列を区切ります。
c# - Dapper: テーブル変数に行を挿入する
私は最近dapperを使用していますが、テーブル変数を使用する場合を除いて、全体として問題はありませんでした。
デモンストレーションのために、このスレッドの変更された例を使用します。
このコードは問題なく動作します:
しかし、これはしません:
唯一の変更点は、一時テーブルの代わりにテーブル変数を使用することです ( @ instead #
)。Dapper (またはチェーン内の他の何か?) は、何らかの形でこれをパラメーターと混同しているようで、「テーブル変数を宣言する必要があります」を返します@t
。
私の使用法に何か問題がありますか、それとも dapper のバグ/欠落している機能ですか?
よろしく、 Kc
アップデート:
明確にするために@t
、dapperによって設定されるパラメーターではありません。@t
現在実行中のクエリに対してのみ存在するローカル テーブルとして宣言されます。私の意見では、dapper は、「通常の」テーブル、ローカル/グローバル一時テーブル、テーブル変数など、どのタイプのテーブルも区別すべきではありません。
もう少し背景情報:
私が本当にやりたいことは次のとおりです。
- Id のリストをインデックス付きテーブル変数 (テーブル変数が機能しない場合は一時テーブル) に挿入します。
- このテーブルを永続テーブルの 1 つに対して結合し、結果を返します。
私の意図は、WHERE IN (...) 句を使用してテーブルから選択するときのパフォーマンスの問題を解決することです
sql - クロステーブルクエリの結果をテーブル変数に格納する方法
実際にここで何かを見つけましたが、複数のテーブルの構文が必要です。例:
そのようなカスタムテーブル変数を作成する方法を誰かが説明できますか?それはまったく可能ですか? 前もって感謝します!
sql-server - ストアドプロシージャへの入力パラメータとしてテーブル名を取得する方法は?
以下に小さなストアドプロシージャがあります。
データを一時テーブルに挿入して同じものを表示することを計画しているように、テーブル名をストアド プロシージャへの入力パラメーターとして使用しています。これは、私のプロジェクト ストアド プロシージャのほんの小さなコード ブロックです。
以下をコンパイルすると、select ステートメントのパラメーターがテーブル変数と見なされ、次のようにエラーがスローされます。
テーブル変数「@TableName」を宣言する必要があります。
SQL: