問題タブ [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 投票する
1 に答える
3057 参照

sql - T-SQLでは、サブクエリでテーブル変数を参照する方法は?

テーブル変数 '@t' を宣言し、'INSERT-INTO-SELECT' を正しく実行しました。グループごとの行番号付けのために追加の計算を使用してテーブル変数をクエリしようとしたときに、「@t」を直接使用すると「変数を宣言する必要があります」、または「@t」のエイリアスを使用すると「無効なオブジェクト名」というエラーが発生しました'。ご教授ください。

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

sql-server-2008 - MS SQL Serverでは、テーブル変数への行の挿入が突然非常に遅くなりました

MS SQL Server 2008では、テーブル変数への行の挿入が突然非常に遅くなりました。テーブル変数とクエリおよび挿入行の作成はsprocで行われ、非常に遅くなっています。

クエリは事実上瞬時に完了し、小さなセット(intの1列の10行)を返し、テーブル変数に挿入するのに50秒以上かかります。一時テーブルに戻しましたが、それで問題ありません。操作は数マイクロ秒で行われます。

0 投票する
8 に答える
178857 参照

sql - 動的SQLステートメントでテーブル変数を使用するには?

ストアド プロシージャでは、プロシージャの上に 2 つのテーブル変数を宣言しました。現在、動的SQLステートメント内でそのテーブル変数を使用しようとしていますが、そのプロシージャの実行時にこのエラーが発生します。SQL Server 2008 を使用しています。

これは私のクエリがどのように見えるかです、

そして、次のエラーが表示されます。

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

動的クエリの文字列ブロックの外にあるテーブルを取得しようとしましたが、役に立ちませんでした。

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

performance - CTE (Common Table Expression) と一時テーブルまたはテーブル変数のどちらが速いですか?

CTE(共通テーブル式) と、どちらが速いですかTemp tables?Table variables

0 投票する
8 に答える
152332 参照

sql - SQL-Server でテーブル変数を削除するにはどうすればよいですか? これを行う必要がありますか?

スクリプトにテーブル変数があります (ストアド プロシージャではありません)。2 つの質問:

  1. テーブル変数を削除するにはどうすればよいですか? テーブルの @varName をドロップすると、「snytax が正しくありません」というエラーが発生します。
  2. 私は常にこれを行う必要がありますか?良い習慣だと聞きます。このような小さなスクリプトに本当に必要ですか?

これが私のコードです:

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

sql-server - 一時テーブルまたはテーブル変数への動的クエリの結果

sp_executesql を使用して結果セットを生成するストアド プロシージャがあります。結果の列数はさまざまですが、Col1 Col2 Col3 などの形式になります。

結果を一時テーブルまたはテーブル変数に取得して、作業できるようにする必要があります。問題は、コマンドの実行後に一時テーブルのスコープが失われるため、sp_executesql を使用して動的に行うことができない一時テーブルの列を定義する必要があることです。

グローバル一時テーブルを動的に作成できるようにするため、グローバル一時テーブルを使用するというアイデアをいじりましたが、このプロセスの同時実行によってグローバル一時テーブルが更新される可能性が非常に高くなります。

何か案は?

0 投票する
2 に答える
636 参照

sql-server - テーブル変数の奇妙なSQLServer遅延読み込み?

SQL Server 2008で誤解を招くエラーに遭遇しましたが、私に何が起こっているのかを誰かが説明できるでしょうか。

私は次のようなストアドプロシージャを持っています:

実際のストアドプロシージャはもっと複雑ですが、これが要点です。

SPを実行すると、「文字列またはバイナリデータが切り捨てられる」というエラーが発生する前に、大量の出力行が表示されます。エラー内の特定の行参照は、上記のメインSELECTステートメントのどこかを指していますが、しばらくデバッグした後、最初に相互参照に入力した値が大きすぎることがわかり、それで修正されました。

しかし、私の質問は次のとおりです。

  • SQL Serverは、相互参照行の挿入を完了せずに、メインのSELECTステートメントをどのように実行しましたか?ある種の遅延処理はありますか?テーブル変数の遅延読み込み?

  • いったいなぜ「文字列またはバイナリデータが切り捨てられる」というメッセージが実際に発生している場所を指していないのでしょうか。それとも私はそれを間違っていますか?

ありがとう、レイ

編集

これは、テーブル変数へのLEFT JOINと関係があり、その列はいずれもWHERE句に含まれていないと思います。SQL Serverは、必要になるまで(INNER JOINが完了した後)テーブルの準備を残しているようで、その時点で、結果セットの大部分をSELECTの準備ができているときにエラーが発生しました。

@cross_referenceに正常に挿入された値が、返される結果セットに表示されることにも気づきました。大きすぎるために挿入に失敗した行はNULLを表示するだけです。

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

tsql - テーブル変数の削除のパフォーマンスを向上させる

t-sql の通常のテーブルでの削除のパフォーマンス調整を見てきました。

しかし、テーブル変数の削除に関するパフォーマンスの微調整はありますか?


編集

例を次に示します。UserExclusionsEvaluate は実際には CTE であるため、プロットはより厚くなりますが、最初にテーブル変数を中心に最適化を試みます (可能であれば)。CTE 自体は非常に高速に実行されます。削除が遅いだけです。

現在の化身では、 @UsersCriteria は次のとおりです。

@UsersCriteria を非プライマリとして試し、クラスター化された非クラスター化で実験しました。

また、IN に問題がある可能性もあります。サブクエリでJOINも試しました。


編集:

グッドニュース! suquery をチェーンされた CTE に移動したり、テーブル ヒントを試したりするなど、SQL でたくさん遊んだ後。

テーブル変数から一時テーブルに変更するだけで、パフォーマンスが劇的に向上しました。

これは非常に興味深いことです。削除は単独で正常に実行され、(CTE の) サブクエリは単独で正常に実行されました。しかし、2つを混合すると非常に遅くなりました。

サブクエリで CTE を使用すると、オプティマイザが起動できないのではないでしょうか? たぶん、削除と混合したとき。

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

sql - 「選択からの更新」クエリでテーブル変数を使用する方法は?

このテーブル変数宣言の後にクエリが続きます。

そしてU、次のように定義されています。

これを SQL Management Studio で SQL Server 2005 Express に対して実行すると、次のようになります。

メッセージ 208、レベル 16、状態 1、行 24

オブジェクト名 '@CurrentItems' が無効です。

私はすでにthisthis非常によく似た質問を見てきましたが、問題を解決する方法がわかりません。

実際の問題は何ですか?どうすれば解決できますか?

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

sql - IN(NULL)が機能しないSQLServerのクエリ

「ユーザー定義のテーブルタイプ」を定義すると、次のようになります。

このテーブル変数に0とnullを配置します。次に、このクエリを実行します。

取得しitem=0ないだけですitem is null

簡単に言えば:SELECT something FROM theTable WHERE item IN (0, NULL)動作していません(エラーはありませんが)SELECT something FROM theTable WHERE item=0 OR item IS NULL

したがって、私の質問は、ユーザー定義のテーブルタイプを使用したいが、NULL値も使用する必要があるかどうかです。クエリを正しく実行して、nullアイテムを含む結果を取得するにはどうすればよいですか。

ありがとう(ところで、私はMS SQL Server 2008 R2を使用しています)