[解決済み] SQL Server クエリの最大サイズ?IN句?より良い方法はありますか[重複]?
質問
重複の可能性があります。
T-SQL WHERE col IN (...)
SQL Server のクエリの最大サイズは何ですか?(文字数)
IN句の最大サイズ?Oracleの場合、1000アイテムの制限があると何かで見た気がしますが、2つのINをANDでつなげば回避できるかもしれません。SQL Serverでも同様の問題がありますか?
UPDATE 他のシステム(非リレーショナルデータベース)から1000 GUIDを取得し、SQL Serverに対して"JOIN in codeを行う必要がある場合、最良の方法は何でしょうか?1000のGUIDのリストをIN句に提出することでしょうか? または、より効率的に動作する別のテクニックがありますか?
私はこれをテストしていませんが、GUID を XML ドキュメントとして提出することができるでしょうか。たとえば
<guids>
<guid>809674df-1c22-46eb-bf9a-33dc78beb44a</guid>
<guid>257f537f-9c6b-4f14-a90c-ee613b4287f3</guid>
</guids>
で、DocとTableに対してある種のXQuery JOINを行います。1000項目のIN句より効率が悪い?
どのように解決するのですか?
すべての SQL バッチは バッチサイズ制限 : 65,536 * ネットワークパケットサイズに収まる必要があります。
それ以外のクエリは、実行時の条件によって制限されます。x IN (a,b,c) は x=a OR x=b OR x=c に過ぎず、x=a OR (x=b OR (x=c)) と同様の式木を作成するので、多数の OR で非常に深くなるため、通常はスタック サイズを使い果たすことになります。SQL 7ならSOに当たる の値が10k程度で、IN の値が10k程度でSO
アップデート
Erland の記事で、SQL Server にリスト/配列を渡すというトピックが既に見つかりましたね。SQL 2008 では テーブル値パラメータ があり、DataTable全体をひとつのテーブル型パラメータとして渡し、その上で結合することができます。
XMLとXPathはもう一つの有効な解決策です。
SELECT ...
FROM Table
JOIN (
SELECT x.value(N'.',N'uniqueidentifier') as guid
FROM @values.nodes(N'/guids/guid') t(x)) as guids
ON Table.guid = guids.guid;
関連
-
[エラー処理] [MySQL] [Err] 1241 - オペランドは 1 つのカラムを含む必要があります。
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] SQL ServerにおけるINSERT OR UPDATEに関する解決策
-
[解決済み] 各グループの上位1行を取得
-
[解決済み] SQL Serverには、.NETのMath.Maxのような2つの値を取るMax関数はありますか?
-
[解決済み] SQL Serverで、ある日付より大きいすべての日付を照会するにはどうすればよいですか?
-
[解決済み] SQL Serverでカラムサイズを変更する
-
[解決済み】SQL Serverの動的PIVOTクエリ?
-
[解決済み】SQL ServerでQuery Execution Planを取得する方法は?
-
[解決済み】SQL Serverでdatetimeの時間部分を削除する最良の方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MHAクラスタエラーサマリーの構築
-
[解決済み] Oracle Trigger ORA-04098: トリガーが無効で、再バリデーションに失敗しました。
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] 複数の列でgroup byを使用する
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] フラットテーブルをツリーにパースする最も効率的/エレガントな方法は何ですか?
-
[解決済み] Postgres でサブクエリを使用してテーブルの行を更新する