100万行のテーブルがあります。ユーザーIDを主キーとして持っています。500 のユーザー ID を持つ配列があります。
ユーザーIDが配列にあるテーブルからすべてのレコードを選択したい。これを行う方法の 1 つは、配列を文字列に変更し、文字列を渡して IN クエリを実行することです。
しかし、それは効率的な方法ではないと思います。親切に他の方法を提案してください。
あなたのIDは整数であると仮定しています。おそらく、この Id のリストを他のソースから取得しているため、mysql 側での結合は望ましくない解決策です。はいの場合は、500 ID リストに存在する最大 ID と最小 ID を見つけます。これはphp側で行うことができます。最大値と最小値を取得したら、mysql db にクエリを実行します。 where clause
select ...
from table_name
where min_id <= id and id <= max_id
id
は主キーであるため、すでにインデックスが作成されているという利点があります。
私の推測では、これらのユーザー ID を別のテーブルから取得し、それらを配列に格納していると思います。これが正しい場合は、代わりに結合を使用するように、これらのユーザー ID を取得するクエリを変更する必要があります。
IN()は適切なプログラミング手法ではないため、結合が役立ちます。ここで結合について学ぶことができます: http://mysqljoin.com/