php 高效统计数据,PHP统计大量数据,一次读还是多次读

场景如下:数据库里有大量记录,php程序需要取出来做一些运算,是一次取出所有还是一次取出部分?示例代码如下:

//一次读取

$start = '2012-06-11 00:00:00';

$end = '2012-06-18 00:00:00';

$rows = $db->query("select ... where

time between '$start' and '$end'");

foreach ($rows as $row) {

$name = $row["name"];

$table[$name] = $row["value"];

}

//多次读取

$start = '2012-06-11 00:00:00';

$end = '2012-06-18 00:00:00';

$start_t = strtotime($start);

$end_t = strtotime($end);

$time_span = 43200;

for ($t = $start_t; $t < $end_t; $t += $time_span) {

$this_s = date("Y-m-d H:i:s", $t);

if ($t + 86400 > $end_t) {

$this_e = date("Y-m-d H:i:s", $end_t);

} else {

$this_e = date("Y-m-d H:i:s", $t + $time_span);

}

$rows = $db->query("select ... where

time between '$this_s' and '$this_e'");

foreach ($rows as $row) {

$name = $row["name"];

$table[$name] = $row["value"];

}

}

在上述代码中,做了几次实验,得出下列数据:

ed7f808928caf4e89f704ea06b97c141.png

其中,总记录数是2296605,第一次测试是一下全部取出,需要占用2G左右内存,整个执行时间是4分多钟,逐步减少每次取出的记录数,当然同时要增加取出次数,当一次取出的次数在16W左右时,程序执行时间最短。

相同的代码在不同的数据规模上性能表现差别巨大,所以写代码还是要注意要处理的数据规模。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值