PHP/MYSQL 查询大数据/遍历表
PHP:PHP 5.3.6 (cli) (built: Jun 15 2011 16:29:50)
MYSQL:5.1.51
假如我们有的一张表有几百万或几万万的记载,我们要运用 PHP 将一切的记载都获取过来(遍历数据表)进行处置。查询语句:
<span style="COLOR: rgb(0,128,0)"> SELECT * FROM largetable;
PS:为了证实上面的做法是最佳的方法,我测验运用 largetable 中的一个字段做 where ,以及 LIMIT,OFFSET 。上面那种 WHERE 取得后果很慢,固然用了索引。后面这种 LIMIT 可以让你有一种想死的觉得(有兴致可以调查下,《分页优化》)。
以 MYSQL 以及PDO_MYSQL 为例,测验直接运用以下代码,必定会呈现超内存的状况:
<span style="COLOR: rgb(0,128,0)"> $result = mysql_query($sql);
<span style="COLOR: rgb(0,128,0)"> while ($rowset = mysql_fetch_assoc($mysql)) {
<span style="COLOR: rgb(0,128,0)"> ...
<span style="COLOR: rgb(0,128,0)"> $stmt = $dbh->prepare($sql);
<span style="COLOR: rgb(0,128,0)"> $stmt->execute();
<span style="COLOR: rgb(0,128,0)"> while ($row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) {
<span style="COLOR: rgb(0,128,0)"> ...
缘由在于在查询执行后,PHP 的MYSQL、PDO_MYSQL 将查询后果悉数缓存到了客户端,也就是 PHP 执行地点机械上。如许假如我们要 SELECT * FROM LARGETABLE 查询的记载在 百万以上的时分 ,缓存的后果就会十分大,超出 PHP 运用内存。所认为了防止如许状况就需求封闭客户端的缓存。
这里供应二个测试剧本,辨别为 MYSQL、PDO_MYSQL 封闭缓存后查询样例。点击下载:mysql_query
以下是 PDO_MYSQL 在查询 ~100W 以及 ~200W (540M)数据后果(由于我的 PHP 内存运用设置了1G所以没挂:) )
可以很分明的看出在缓存后果后占用内存惊人…,当我们处置万万数据的时分必挂。
以下是 PDO_MYSQL 封闭缓存查询 ~200W 的数据后果。这下处置万万以及E级的数据的时分,对内存透露表现很淡定。
PS:假如你要处置的数据就几十万,你照样调大点内存好了。比方 MYSQL:
mysql_unbuffered_query() 的益处是有价值的:在 mysql_unbuffered_query() 返回的后果集之上不克不及运用 mysql_num_rows() 和 mysql_data_seek()。此外在向 MySQL 发送一条新的 SQL 查询之前,必需提取失落一切未缓存的 SQL 查询所发生的后果行。
- 1全站内置SEO优化机制
- 2房地产行业微信营销方案3
- 3PHP性能优化大全
- 4企业网站的优化现状
- 5公司网站建成后应该做些什么?
- 6电子商务网站的下一个掘金点-----O2O
- 7PHP Google的translate API代码
- 8大规模网站架构
- 9PhoneGap新手总是需要一些基础问题的解答
- 10HTML5的呈现代表着新一波的Web顺序办法
- 11玩具租赁系统功能列表
- 12企业为什么偏爱须要专业的网站构造单位做官方网站呢?
- 13 玩具租赁商城系统需求2
- 14APC(Alternative PHP Cache)是一个PHP缓存
- 15利用构造方法实现模块的解耦
- 16最新动态-久途迁新址
- 17如何让您的网站盈利中发挥到极致
- 18企业如何定位自己的企业网站目标
- 19 企业四网合一网站升级版3
- 20网站策划的重要讨论
- 21租赁网站功能介绍
- 22网贷平台主要运营模式主要有两类---债权转让模式
- 23企业建站的重要性
- 24久途教你怎么样经营自己的网站
- 25企业网站排名要打造内链
- 26MySQL InnoDB之事务与锁详解
- 27微信公众平台有什么好处
- 28久途愿景
- 29企业为什么偏爱需要资深的网站设计企业做官方网站呢?
- 30企业四网合一网站升级版1
成都公司:成都市成华区建设南路160号1层9号
重庆公司:重庆市江北区红旗河沟华创商务大厦18楼