PDOを使用しています。したがって、一連のレコードを選択するためのクエリを準備するステートメントがあります。例:
//select duplicates
$stmt = $this->db->prepare('SELECT Name COUNT( * ) AS CNT
FROM `Test`
GROUP BY Name
HAVING CNT > 1');
$stmt2 = $this->db->prepare('SELECT * FROM Test2 WHERE TName = ?');
特定の列ではなく、すべてのデータを選択する必要があることに注意してください。テーブルには 5,000 レコード、場合によってはそれ以上のレコードが含まれます。5,000 件のレコードをすべて選択する必要があり、それぞれに対して別のクエリを実行して別のものを選択する必要があります。
$arr = array();
while ($row = $stmt->fetch(DB::FETCH_ASSOC)) {
$stmt2->execute($row['Name']);
$arr[] = $stmt2->fetchAll(DB::FETCH_ASSOC);
}
結合を使用できることはわかっていますが、私の場合、データをループして stmt1 行ごとに stmt2 を実行する必要があるため、結合は機能しません。
これを実行すると、許容できない最大 10 ~ 15 分かかります。もっと速くする必要があります。誰が問題が何であるか教えてもらえますか? 5k レコードはループするほど多くないようです。
STMT1 returns up to 5.5k records
返された複製ごとにデータが必要です。