监理公司管理系统 | 工程企业管理系统 | OA系统 | ERP系统 | 造价咨询管理系统 | 工程设计管理系统 | 甲方项目管理系统 | 签约案例 | 客户案例 | 在线试用
X 关闭
鹰潭OA
联系方式

成都公司:成都市成华区建设南路160号1层9号

重庆公司:重庆市江北区红旗河沟华创商务大厦18楼

咨询:400-8352-114

加微信,免费获取试用系统

QQ在线咨询

鹰潭网站建设公司

当前位置:工程项目OA系统 > 泛普各地 > 江西OA系统 > 鹰潭OA > 鹰潭网站建设公司

PHP/MYSQL 查询大数据

申请免费试用、咨询电话:400-8352-114

鹰潭网站建设www.diyphp.net

PHP:PHP 5.3.6 (cli) (built: Jun 15 2011 16:29:50)

  MYSQL:5.1.51

  若是我们有的一张表有几百万或几千万的记载,我们要运用 PHP 将一切的记载都获取过来(遍历数据表)进行处置。查询句子:

  SELECT * FROM largetable;

  PS:为了证明上面的做法是最佳的方法,我测验运用 largetable 中的一个字段做 where ,以及 LIMIT,OFFSET 。上面那种 WHERE 取得成果很慢,固然用了索引。后边这种 LIMIT 可以让你有一种想死的觉得(有爱好可以了解下,《分页优化》)。

  以 MYSQL 以及PDO_MYSQL 为例,测验直接运用以下代码,必然会呈现超内存的状况:

  $result = mysql_query($sql);

  while ($rowset = mysql_fetch_assoc($mysql)) {

  ...

  $stmt = $dbh->prepare($sql);

  $stmt->execute();

  while ($row = $stmt->fetch(PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT)) {

  ...

  缘由在于在查询履行后,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 查询所发生的成果行。

 

发布:2025-09-29 10:57    编辑:泛普软件 · xiaona    [打印此页]    [关闭]

相关推荐

最新文章

泛普鹰潭网站建设公司其他应用

鹰潭软件开发公司 鹰潭门禁系统 鹰潭物业管理软件 鹰潭仓库管理软件 鹰潭餐饮管理软件 鹰潭网站建设公司