我试图找出一种无需循环 700,000 个 mysql 查询即可收集数据集的方法。
我有两张桌子
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
有 2500 万行并记录用户在网站上工作时的活动。uniq_ip
有一个所有 IP 号码的列表以及它在用户中列出的次数(在触发器更新时)。
目前,在进行白日梦编码时,我会从中获取所有 IP 的列表uniq_ip
并循环它们以获取每个 IP 的最新 2000 条记录。由于uniq_ip
有 700,000 行,这个循环真的很讨厌,总共产生 700,000 个查询,使用
select * from users where ip = '$outerloopip' order by `time` desc limit 2000;
我正在尝试获取一个查询,该查询将获取每个 IP 的最新 2000 个列表。如果 1.2.3.4 被列出 10,000 次,我只想要最近的 2000,基于时间字段。
任何想法如何在一个查询中做到这一点?