2012-11-29 109 views
0

我根據博客上的許多教程和在stackoverflow上的答案進行了以下查詢。MySQL:簡化複雜的查詢

$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大小的表格。

由於數據庫中有很多數據,查詢總數爲17000.000。所以,我試圖執行完整的腳本,但我看到在上面的查詢花了很多秒(1或2)。

您有任何建議通過更正上述查詢來提高執行速度嗎?

回答

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' 
+0

OMG!現在真的很快! (每秒30次,而不是每秒1次) – zuperakos

+1

@zuperakos子查詢在mysql中很少優化。儘可能避免使用它們。 – jordanm

+0

非常感謝你們倆! – zuperakos