百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> php date()和sql FROM_UNIXTIME() 的效率比较
分享文章到:

php date()和sql FROM_UNIXTIME() 的效率比较

发布时间:01/15 来源: 浏览: 关键词:
下面我们一起来看看php date()和sql FROM_UNIXTIME() 的效率比较吧,到底是那个的性能要好一些呢,一起看实例。

在php中,将int型的时间戳转换为日期时间,有两种方法,一种是用我们熟悉的函数date("Y-m-d H:i",time())来转换;还有一种是在sql中用 FROM_UNIXTIME(add_time, "%Y-%m-%d %H:%m") 转换,平时用的不多,估计很多人都还不知道吧。

为了了解他们之间的效率和区别,我做了一个实例。先建了一张表,只添加了两个字段,一个是自增长的id,一个是int型的时间,添加两条数据后,再用自我复制语句 insert into t1 (add_time) select add_time from t1 将表迅速的复制到10万多条数据,用于测试。


程序很简单,就是比较在mysql中转换和在php中转换执行时间比较。

每块代码我执行了很多遍,我从中取出的一个比较适中的时间,现在从下图可以很明显的看出在数据库中用 FROM_UNIXTIME() 函数比 php 的 date() 函数要高效的多,不过我们不能忽略mysql数据库执行的开销。所以在不考虑数据库开销的情况下 FROM_UNIXTIME() 是快速的。


PHP源码参考:

 代码如下

<?php

 header("Content-type:text/html;charset=utf-8");

 //程序运行时间

 $starttime = explode(' ',microtime());

 


 /*········以下是代码区·········*/

 $link = mysql_connect("localhost","root","root");

 mysql_select_db("test");

 mysql_query("set names utf8");

 $sql = "select add_time from t1 limit 100000";

 $res = mysql_query($sql,$link);

 $num = mysql_num_rows($res);

 while($row = mysql_fetch_array($res)){

  //echo date("Y-m-d H:i",$row['add_time'])." | ";

 }

 /*········以上是代码区·········*/

 


 //程序运行时间

 $endtime = explode(' ',microtime());

 $thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);

 $thistime = round($thistime,3);

 echo '<hr/>本次通过 PHP 中 date("Y-m-d H:i",$row["add_time"]) 转换。<br/> 转换本次转换 '.$num.' 条数据。<br/>本次执行耗时:'.$thistime.' 秒。';

 


 //--------------------------------------------------------

 //--------------------------------------------------------

 //程序运行时间

 $starttime = explode(' ',microtime());

 


 /*········以下是代码区·········*/

 $sql = "select add_time from t1 limit 100000";

 $res = mysql_query($sql,$link);

 $num = mysql_num_rows($res);

 while($row = mysql_fetch_array($res)){

  echo $row['add_time']." | ";

 }

 /*········以上是代码区·········*/

 


 //程序运行时间

 $endtime = explode(' ',microtime());

 $thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);

 $thistime = round($thistime,3);

 echo '<hr/>本次直接输出,没任何转换<br/>本次执行耗时:'.$thistime.' 秒。';

 


 //--------------------------------------------------------

 //--------------------------------------------------------

 //程序运行时间

 $starttime = explode(' ',microtime());

 


 /*········以下是代码区·········*/

 $sql = "select FROM_UNIXTIME( add_time, '%Y-%m-%d %H:%m' ) as add_time from t1 limit 100000";

 $res = mysql_query($sql,$link);

 $num = mysql_num_rows($res);

 while($row = mysql_fetch_array($res)){

  //echo $row['add_time']." | ";

 }

 /*········以上是代码区·········*/


 //程序运行时间

 $endtime = explode(' ',microtime());

 $thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);

 $thistime = round($thistime,3);

 echo '<hr/>本次通过 mysql 中 FROM_UNIXTIME( add_time, "%Y-%m-%d %H:%m" ) 转换。<br/> 转换本次转换 '.$num.' 条数据。<br/>本次执行耗时:'.$thistime.' 秒。';

?>

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有5人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板