MySQLIN条件制限


84

ねえ、MySQLステートメントでIDの大きなセットを使用してIN条件を使用する必要があります。

SELECT * FROM users WHERE id IN (1,2,3,4...100000)

INステートメントが持つことができるアイテムに制限はありますか?


回答:


107

いいえ、ありません。IN機能に関するマニュアルを確認してください。

INリスト内の値の数は、max_allowed_pa​​cket値によってのみ制限されます。


たとえば、を使用した更新があるwhere id IN (14000 ids)場合、更新クエリが64MB(デフォルト値)未満になるまで機能しますよね?
Oleg Abrazhaev

1
@OlegAbrazhaevINキーワードには組み込みの制限はありませんがmax_allowed_packet、値の数を間接的に制限するような他の制限がある場合があります。この値を1024(バイト)に設定すると、限られた数の値のみを効果的に使用できます。
Progman

20

私がmysqlで知っている限り、INステートメント内の項目に制限はありません。

オラクルでは、INステートメントには1000項目の制限があります。

ただし、の項目が多いほど、INその列にインデックスが付けられていない限り、クエリのパフォーマンスが低下します。


3
INが検索主キーの場合、原因はインデックスからの戻りです
ajreal 2010年

-2

ここに画像の説明を入力してください

1073741824これはMysqlドキュメントで指定された制限です

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.