查询大量数据的,如果出现如下情况,就说明最大内存已经耗尽:
可临时修改脚本使用内存大小进行处理:
注意:
当使用libmysqlclient作为库时,PHP的内存限制将不会计算用于结果集的内存,除非将数据读入PHP变量。与mysqlnd的内存占用将包括完整的结果集。
由于缓冲查询是默认的,下面的示例将演示如何使用每个API执行无缓冲的查询。
使用子查询优化大数据量分页查询
这种方式的做法是先定位偏移位置的id,然后再往后查询,适用于id递增的情况。
使用id限定优化大数据量分页查询
使用这种方式需要先假设数据表的id是连续递增的,我们根据查询的页数和查询的记录数可以算出查询的id的范围,可以使用 id between and 来查询:
当然了,也可以使用in的方式来进行查询,这种方式经常用在多表关联的情况下,使用其他表查询的id集合来进行查询:
但是使用这种in查询方式的时候要注意的是,某些MySQL版本并不支持在in子句中使用limit子句。
参考 sql优化之大数据量分页查询(mysql) - yanggb - 博客园 (cnblogs.com)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)