MySQL:简化复杂的查询

时间:2012-11-29 03:17:27

标签: php mysql infinite-loop large-data

我根据博客中的许多教程和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)。

您是否有任何建议通过更正上述查询来提高执行速度?

1 个答案:

答案 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'