我正在使用 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 = ?');
请注意,我确实需要选择所有数据,而不是某些列。该表包含 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
我需要返回每个重复的数据: