0

ブログの多くのチュートリアルと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 個の値の 1 次元配列によって取得されます。しかし、実際には、ループ内でループを使用して、4000x4000 サイズのテーブルを作成します。

データベースには多くのデータがあるため、クエリの合計は 17.000.000 になります。そのため、スクリプト全体を実行しようとしましたが、上記のクエリで数秒 (1 または 2) かかることがわかりました。

上記のクエリを修正して実行速度を上げるための提案はありますか?

4

1 に答える 1

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'
于 2012-11-29T03:20:15.440 に答える