2


0

column_value IN(配列)のSQLに配列を渡すことができますか?

私は、配列内にあるものの60,000行以上を持つテーブルで一意のIDを検索するコードを書いています

mysql_query("SELECT * FROM users WHERE  unique_indexed_user_id IN('".join("', '", $array)."')") ;

この配列の量はエンドユーザーに限定されないため、最終的には大きな配列を選択することになります。 したがって、私は配列を制限する必要があります

   if( count($array_limit)>$array_limit )
  array_splice($array, $array_limit);

しかし、制限をどのように把握するかわからない。このコードは、人々が友人を何かに招待するためのソーシャルネットワークで使用されている。 大きければ大きいほど良いです。 しかし、mysqlが処理できる配列の大きさはわかりませんか?

`$ array_limit`の値はどうあるべきですか?

2 Answer


2


MySQLに渡されるクエリの最大長は、 `max_packet_size`変数の長さです。 http://lists.mysql.com/mysql/187971

また、その数のIDを持つクエリを解析して実行するのにかかる時間など、他のことも考慮する必要があります。 私はこのアプローチを自分で取っており、数千回のIDの後、深刻にスローダウンし始めました。 可能であれば、「JOIN」を試してみてください。


0


本当に何個必要ですか?

私はクエリで10000アイテムのようなものを問題なく使用しています(ライブサイトではなく、あるデータベースから別のデータベースにデータを移動している間)ので、恐ろしく大きなクエリを作成できます。

ただし、ユーザーに表示したいアイテムの数が多くても、最後まで大きなリストをスクロールする人はいません。そのようなデータがあると、ユーザーインターフェイスが大幅に遅くなる可能性があります。

リクエストごとにページングまたはアペンドを使用する必要があります。これにより、毎回100個のアイテムなどしか取得できません。