700,000 の mysql クエリをループせずにデータセットを収集する方法を見つけようとしています。
私は2つのテーブルを持っています
users
と
id autoincrement,
time timestamp,
username varchar(200),
email varchar(100),
ip varchar(20)
そしてuniq_ip
_
ip unique varchar(20),
most_recent datetime,
count (int)
users
には 2,500 万行あり、ユーザーがサイトで作業する際のアクティビティを記録します。uniq_ip
すべての IP 番号のリストと、それがユーザーにリストされた回数 (トリガー更新時) があります。
現時点では、空想のコーディング中に、すべての IP のリストを取得し、uniq_ip
それらをループして、それらの IP ごとに最新の 2000 レコードを取得しています。700,000 行あるためuniq_ip
、このループは非常に厄介で、合計 700,000 件のクエリが発生します。
select * from users where ip = '$outerloopip' order by `time` desc limit 2000;
各 IP の最新の 2000 件のリストを取得する単一のクエリを取得しようとしています。1.2.3.4 が 10,000 回リストされている場合、時間フィールドに基づいて最新の 2000 年が必要です。
1つのクエリでそれを行う方法はありますか?