我根据博客中的许多教程和stackoverflow上的答案进行了以下查询。
$query = mysql_query("SELECT COUNT(user_id) FROM $table f1".
"WHERE (user_id = '$userA')".
"AND EXISTS (SELECT 1 FROM $table f2 WHERE user_id = '$userB'"
"AND f1.$field = f2.$field)")
or die(mysql_error());
while($row = mysql_fetch_array($query)){
$com = $row['COUNT(user_id)'];
}
userA,userB等参数由4000个值的一维数组获取。但实际上,我在循环中使用循环来制作一个4000x4000大小的表。
由于数据库中的数据很多,总查询次数将为17.000.000。所以,我尝试执行完整的脚本,但我看到在上面的查询花了很多秒(1或2)。
您是否有任何建议通过更正上述查询来提高执行速度?
答案 0 :(得分:2)
我认为您可以使用INNER JOIN
查询,如下所示:
SELECT COUNT(f1.user_id)
FROM $table f1 JOIN $table f2
ON f1.$field = f2.$field
WHERE f1.user_id = '$userA'
AND f2.user_id = '$userB'