4

100万行のテーブルがあります。ユーザーIDを主キーとして持っています。500 のユーザー ID を持つ配列があります。

ユーザーIDが配列にあるテーブルからすべてのレコードを選択したい。これを行う方法の 1 つは、配列を文字列に変更し、文字列を渡して IN クエリを実行することです。

しかし、それは効率的な方法ではないと思います。親切に他の方法を提案してください。

4

4 に答える 4

1

あなたの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は主キーであるため、すでにインデックスが作成されているという利点があります。

于 2013-09-25T10:28:32.683 に答える
0

私の推測では、これらのユーザー ID を別のテーブルから取得し、それらを配列に格納していると思います。これが正しい場合は、代わりに結合を使用するように、これらのユーザー ID を取得するクエリを変更する必要があります。

于 2013-09-25T10:18:35.303 に答える
-1

IN()は適切なプログラミング手法ではないため、結合が役立ちます。ここで結合について学ぶことができます: http://mysqljoin.com/

于 2013-09-25T10:25:15.130 に答える