我正在运行一些在运行时需要0,0053秒但在获取时大约需要12秒的查询...这会在获取大约100,000行时导致PHP超时。
我想知道是否有一种方法可以加快使用光标或其他东西的提取速度,比如在Python中你可以在没有取出每一行的情况下进行循环...因为一切都在破坏PHP中的超时
答案 0 :(得分:0)
计划A:SELECT COUNT(*)...
以查看它是100K还是300K或其他什么。将其插入经验公式(如$seconds = 10 + $count / 2000
)并将其插入set_time_limit($seconds)
。 (这假设你没有超时COUNT(*)
!)
B计划:" Chunk"数据,所以你不是要一次性获取所有数据。 (请记住,PHP有一个默认的内存限制,你可能有可能超过。)分块不应该使用OFFSET
和LIMIT
,而是#34;记住它停止的位置&#34 ;;否则会越来越慢,最终超时。关于分块的更多细节在http://mysql.rjweb.org/doc.php/deletebig。