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

小浪SEO博客 专注SEO优化思维、SEO技术的实战分享类博客~

下面我们一起来看看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源码参考,代码如下:

  1. <?php
  2. header("Content-type:text/html;charset=utf-8");
  3. //程序运行时间
  4. $starttime=explode('',microtime());
  5. /*········以下是代码区·········*/
  6. $link=mysql_connect("localhost","root","root");
  7. mysql_select_db("test");
  8. mysql_query("setnamesutf8");
  9. $sql="selectadd_timefromt1limit100000";
  10. $res=mysql_query($sql,$link);
  11. $num=mysql_num_rows($res);
  12. while($row=mysql_fetch_array($res)){
  13. //echodate("Y-m-dH:i",$row['add_time'])."|";
  14. }
  15. /*········以上是代码区·········*/
  16. //程序运行时间
  17. $endtime=explode('',microtime());
  18. $thistime=$endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);
  19. $thistime=round($thistime,3);
  20. echo'<hr/>本次通过PHP中date("Y-m-dH:i",$row["add_time"])转换。<br/>转换本次转换'.$num.'条数据。<br/>本次执行耗时:'.$thistime.'秒。';
  21. //--------------------------------------------------------
  22. //--------------------------------------------------------
  23. //程序运行时间
  24. $starttime=explode('',microtime());
  25. /*········以下是代码区·········*/
  26. $sql="selectadd_timefromt1limit100000";
  27. $res=mysql_query($sql,$link);
  28. $num=mysql_num_rows($res);
  29. while($row=mysql_fetch_array($res)){
  30. echo$row['add_time']."|";
  31. }
  32. /*········以上是代码区·········*/
  33. //程序运行时间
  34. $endtime=explode('',microtime());
  35. $thistime=$endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);
  36. $thistime=round($thistime,3);
  37. echo'<hr/>本次直接输出,没任何转换<br/>本次执行耗时:'.$thistime.'秒。';
  38. //--------------------------------------------------------
  39. //--------------------------------------------------------
  40. //程序运行时间
  41. $starttime=explode('',microtime());
  42. /*········以下是代码区·········*/
  43. $sql="selectFROM_UNIXTIME(add_time,'%Y-%m-%d%H:%m')asadd_timefromt1limit100000";
  44. $res=mysql_query($sql,$link);
  45. $num=mysql_num_rows($res);
  46. while($row=mysql_fetch_array($res)){
  47. //echo$row['add_time']."|";
  48. }
  49. /*········以上是代码区·········*/
  50. //phpfensi.com
  51. //程序运行时间
  52. $endtime=explode('',microtime());
  53. $thistime=$endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);
  54. $thistime=round($thistime,3);
  55. echo'<hr/>本次通过mysql中FROM_UNIXTIME(add_time,"%Y-%m-%d%H:%m")转换。<br/>转换本次转换'.$num.'条数据。<br/>本次执行耗时:'.$thistime.'秒。';
  56. ?>

相关广告
  • php date()和sql FROM_UNIXTIME() 的效率比较 php date()和sql FROM_UNIXTIME() 的效率比较 php date()和sql FROM_UNIXTIME() 的效率比较
相关阅读

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

2019/10/10 17:37:05 | 谷歌SEO算法 | Safari浏览器