PHP MySQL Cursors?或查询而不提取


PHP MySQL Cursors? or Query without fetching

我正在运行一些查询,运行需要 0,0053 秒,但获取大约需要 12 秒......这会导致 PHP 在获取大约 100,000 行时超时。

我想知道是否有办法使用光标或其他东西加快获取速度,就像在 Python 中一样,您可以在其中执行循环而无需获取每一行......因为一切都因 PHP 中的超时而中断

计划 A:SELECT COUNT(*)...看看它是 100K 还是 300K 或其他什么。 将其代入经验公式(如$seconds = 10 + $count / 2000)并将其代入set_time_limit($seconds)。 (这假设您不会超时执行COUNT(*)

计划B:"分块"数据,这样您就不会尝试一次获取所有数据。 (请记住,PHP 有一个默认的内存限制,你可能会威胁要超过这个限制。 分块不应该使用OFFSETLIMIT,而是"记住它停止的地方";否则它会越来越慢,最终超时。 有关分块的更多详细信息,请参见 http://mysql.rjweb.org/doc.php/deletebig 。