我正在使用PDO。所以我有一个声明准备一个查询来选择一堆记录。例如:PHP循环记录非常慢
//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 = ?');
请注意,我确实需要选择所有数据,而不是某些列。该表包含5k条记录,有时更多。我需要选择所有5k记录,并且对于其中的每个记录,我需要执行另一个查询来选择其他内容。
$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
我需要为每个重复数据返回:
你在执行第二个查询? –
你在查询的表格上是否有适当的索引? –
是的,我确实使用索引,我更新了第二个查询 – Giorgi