$remainingQuery = "select * from $value s
where not exists (
select userID from userLocations ul
where ul.userID = s.userID
) AND (userIP > '') GROUP BY userIP LIMIT 1";
$remainingResults = mysql_query($remainingQuery) or die(mysql_error());
上面的代码执行得非常慢。有谁知道为什么?
下面是有关表用户位置的信息。
enum('ipv4', 'ipv6') latin1_swedish_ci
ip_start varbinary(16)
ip_end varbinary(16)
country char(2)
stateprov varchar(80)
city varchar(80)
这是在$value中命名的表之一
name varchar(20)
score bigint(20)
log longtext
difficulty int(10)
games int(11)
checkSum text
bought tinyint(1)
time timestamp
bundle int(11)
userID text
userIP text
city text
country text
我在您的查询中看到了一些事情。首先,您按用户 IP 分组并限制为 1。这将只返回一个用户IP,这是你真正想要的吗?您如何知道返回的是哪个用户 IP?
也许使用NOT IN
会比你拥有的更快?
SELECT *
FROM table s
WHERE s.userID NOT IN (SELECT userId FROM userLocations) AND (userIP > '')
GROUP BY userIP
LIMIT 1;