我有以下运行此SQL查询的PHP代码(在大约一百万行的表上):
while (true) {
$sql = '
SELECT question_id, owner_id, has_answer, has_read
FROM questions
WHERE owner_id > 0 AND question_id > :question_id AND has_answer = 1
ORDER BY question_id
LIMIT 10000
';
$questions = preparedQuery($sql, array('question_id' => $lastId));
if (!count($questions)) break;
$lastId = $questions[count($questions) - 1]['question_id'];
// More stuff...
}
最初,对于前4次迭代,它相对较快,但从第5次开始,它突然变得非常慢。它从第一个循环中的几秒钟到第五个循环中的几分钟。我不明白的是,查询都是相同的,所以我希望它们以相同的速度运行。
知道可能导致这种情况的原因是什么?有什么我可以做的来优化这个吗?