国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

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

2024-07-24 12:36:51
字體:
來源:轉載
供稿:網友

下面我們一起來看看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.  
  7.  /*········以下是代碼區·········*/ 
  8.  $link = mysql_connect("localhost","root","root"); 
  9.  mysql_select_db("test"); 
  10.  mysql_query("set names utf8"); 
  11.  $sql = "select add_time from t1 limit 100000"
  12.  $res = mysql_query($sql,$link); 
  13.  $num = mysql_num_rows($res); 
  14.  while($row = mysql_fetch_array($res)){ 
  15.   //echo date("Y-m-d H:i",$row['add_time'])." | "; 
  16.  } 
  17.  /*········以上是代碼區·········*/ 
  18.  
  19.  
  20.  //程序運行時間 
  21.  $endtime = explode(' ',microtime()); 
  22.  $thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]); 
  23.  $thistime = round($thistime,3); 
  24.  echo '<hr/>本次通過 PHP 中 date("Y-m-d H:i",$row["add_time"]) 轉換。<br/> 轉換本次轉換 '.$num.' 條數據。<br/>本次執行耗時:'.$thistime.' 秒。'
  25.  
  26.  
  27.  //-------------------------------------------------------- 
  28.  //-------------------------------------------------------- 
  29.  //程序運行時間 
  30.  $starttime = explode(' ',microtime()); 
  31.  
  32.  
  33.  /*········以下是代碼區·········*/ 
  34.  $sql = "select add_time from t1 limit 100000"
  35.  $res = mysql_query($sql,$link); 
  36.  $num = mysql_num_rows($res); 
  37.  while($row = mysql_fetch_array($res)){ 
  38.   echo $row['add_time']." | "
  39.  } 
  40.  /*········以上是代碼區·········*/ 
  41.  
  42.  
  43.  //程序運行時間 
  44.  $endtime = explode(' ',microtime()); 
  45.  $thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]); 
  46.  $thistime = round($thistime,3); 
  47.  echo '<hr/>本次直接輸出,沒任何轉換<br/>本次執行耗時:'.$thistime.' 秒。'
  48.  
  49.  
  50.  //-------------------------------------------------------- 
  51.  //-------------------------------------------------------- 
  52.  //程序運行時間 
  53.  $starttime = explode(' ',microtime()); 
  54.  
  55.  
  56.  /*········以下是代碼區·········*/ 
  57.  $sql = "select FROM_UNIXTIME( add_time, '%Y-%m-%d %H:%m' ) as add_time from t1 limit 100000"
  58.  $res = mysql_query($sql,$link); 
  59.  $num = mysql_num_rows($res); 
  60.  while($row = mysql_fetch_array($res)){ 
  61.   //echo $row['add_time']." | "; 
  62.  } 
  63.  /*········以上是代碼區·········*/ 
  64. //Vevb.com 
  65.  //程序運行時間 
  66.  $endtime = explode(' ',microtime()); 
  67.  $thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]); 
  68.  $thistime = round($thistime,3); 
  69.  echo '<hr/>本次通過 mysql 中 FROM_UNIXTIME( add_time, "%Y-%m-%d %H:%m" ) 轉換。<br/> 轉換本次轉換 '.$num.' 條數據。<br/>本次執行耗時:'.$thistime.' 秒。'
  70. ?>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 喀喇| 津市市| 韶山市| 新沂市| 长宁县| 丹棱县| 社会| 龙井市| 太仆寺旗| 昌都县| 渭源县| 饶河县| 靖安县| 淄博市| 贵溪市| 玉林市| 土默特右旗| 敦煌市| 定南县| 剑川县| 成武县| 牙克石市| 凤凰县| 新巴尔虎右旗| 广西| 永春县| 东兰县| 綦江县| 甘谷县| 古田县| 永定县| 松阳县| 博白县| 颍上县| 云霄县| 嘉黎县| 逊克县| 宁乡县| 闽侯县| 博客| 凤庆县|