-2

我只是毁了这个问题,我需要选择大量的行,对其执行某些操作,当然我不需要它们,我可以承受1-2秒之间的延迟,我通过以下方法接近 PHP 循环。

$last_id=0;
for($i=1;$i<20;$i++)
{
Mysql_query...... WHERE id>last_id;

$last_id=$TablerowID;
}

我在这个表中有 100 万行,但我觉得它不是一个好方法 mysql 不会以正确的 id 递增形式返回数据,它有时也会返回 1 并离开 50 跳转到 100 然后在 100 之后返回 50 等等,这将跳过一些行或在此函数中创建其他问题。

我不希望按 id 排序,因为它也会大大降低性能,而且我不能在性能上妥协。

请问您的建议?

4

1 回答 1

1

order by 最后执行。因此,如果您每次检索 100 行的垃圾,性能开销将是最小的。

您可以将查询调整为如下所示:

$last_id=0;
for($i=1;$i<20;$i++)
{
Mysql_query...... WHERE id>last_id and id<(last_id+junk_size) order by id;

$last_id=$TablerowID;
}

通过更改 junk_size,您可以凭经验找到最佳值。

于 2013-07-21T05:26:50.283 回答