問題タブ [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.

0 投票する
0 に答える
5688 参照

sql-server-2008 - テーブル変数と一時テーブルの大きなパフォーマンスの違い

がありUDF、大量のデータを提供しています。いくつかのテーブル変数が使用されます。この時点では、インデックスは作成されません。

テストデータを使用した実行時間は約30 秒です。

テーブル変数を一時テーブルに変更するだけで (許可されUDF#tablesいないため、 以外)、実行時間が大幅に短縮されます。約3秒です。この記事では違いについて説明していますが、この種のパフォーマンス デルタの原因となっているポイントがわかりません。

とにかく、一時テーブルは許可されていないUDFので、SPROC. 残念ながら、データのターゲット「コンテナー」はビューまたはテーブルでなければならないため、できません。サードパーティの制限により変更できません。(erp システムのデータは事前​​に処理されており、テーブルまたはビューで提供する必要があります。たとえば、select <col> from <object>.

現在使用しているテーブル変数を作成するインデックスを追加してみましたが、実行時間は減りませんでした。

最後にビューにデータを取得しながら、一時テーブルのパフォーマンスを達成するためのヒントやヒントをいただければ幸いです。

SQL-Query (テーブル変数が追加されますが、デモ データは提供できません):

0 投票する
0 に答える
76 参照

tsql - DECLARE ステートメントは変数をグローバルにしますか?

DECLARE ステートメントが宣言された変数をグローバルにするのはなぜですか?

例えば:

私に与えます:

ここに画像の説明を入力

すべての場合に何も返さないようにする必要がありますか?

0 投票する
1 に答える
1600 参照

.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# コードはまさにそれを行います。

あなたが私に与えることができるどんな助けでも大歓迎です. ありがとう!!!

0 投票する
1 に答える
589 参照

mysql - INT のカンマ区切り文字列から一時テーブルを作成する

ここで、一時テーブルと WHILE 句を使用して調査結果を共有したいと思います。IN ステートメントで使用する INT のコンマ区切り文字列を区切ります。

0 投票する
3 に答える
5762 参照

c# - Dapper: テーブル変数に行を挿入する

私は最近dapperを使用していますが、テーブル変数を使用する場合を除いて、全体として問題はありませんでした。

デモンストレーションのために、このスレッドの変更された例を使用します。

このコードは問題なく動作します:

しかし、これはしません:

唯一の変更点は、一時テーブルの代わりにテーブル変数を使用することです ( @ instead #)。Dapper (またはチェーン内の他の何か?) は、何らかの形でこれをパラメーターと混同しているようで、「テーブル変数を宣言する必要があります」を返します@t

私の使用法に何か問題がありますか、それとも dapper のバグ/欠落している機能ですか?

よろしく、 Kc


アップデート:

明確にするために@t、dapperによって設定されるパラメーターではありません。@t現在実行中のクエリに対してのみ存在するローカル テーブルとして宣言されます。私の意見では、dapper は、「通常の」テーブル、ローカル/グローバル一時テーブル、テーブル変数など、どのタイプのテーブルも区別すべきではありません。

もう少し背景情報:

私が本当にやりたいことは次のとおりです。

  • Id のリストをインデックス付きテーブル変数 (テーブル変数が機能しない場合は一時テーブル) に挿入します。
  • このテーブルを永続テーブルの 1 つに対して結合し、結果を返します。

私の意図は、WHERE IN (...) 句を使用してテーブルから選択するときのパフォーマンスの問題を解決することです

0 投票する
1 に答える
78 参照

sql - クロステーブルクエリの結果をテーブル変数に格納する方法

実際にここで何かを見つけましたが、複数のテーブルの構文が必要です。例:

そのようなカスタムテーブル変数を作成する方法を誰かが説明できますか?それはまったく可能ですか? 前もって感謝します!

0 投票する
3 に答える
66446 参照

sql-server - ストアドプロシージャへの入力パラメータとしてテーブル名を取得する方法は?

以下に小さなストアドプロシージャがあります。

データを一時テーブルに挿入して同じものを表示することを計画しているように、テーブル名をストアド プロシージャへの入力パラメーターとして使用しています。これは、私のプロジェクト ストアド プロシージャのほんの小さなコード ブロックです。

以下をコンパイルすると、select ステートメントのパラメーターがテーブル変数と見なされ、次のようにエラーがスローされます。

テーブル変数「@TableName」を宣言する必要があります。

SQL: