You are here: 首頁 架站小知識 PHP 的mysql_fetch_array 讀取複數資料方式比較

飛朵啦學習手札

本網站建議使用Firefox2.0以上,或是使用Goole瀏覽器來瀏覽,並使用1024x768解析度來觀看.

PHP 的mysql_fetch_array 讀取複數資料方式比較

E-mail 列印 PDF

由於最近在寫讀取資料庫時,一直在想用先用DB_num_rows取出值然後再用FOR去跑比較快,還是用WHILE去跑比較快,因此寫了一個小程式去跑看看 

程式碼如下 


function caclutime(){//時間計算FUNCTION

$time = explode( " ", microtime()); 

$usec = (double)$time[0]; 

$sec = (double)$time[1]; 

return $sec + $usec; 

}               

$sql = "SELECT birth FROM `char_data` where id = '$this->id' ORDER BY job ";
$l_sql = DB_mysql_query($sql);
//時間測試-FOR
$begin_time=caclutime();
$l_num = DB_num_rows($l_sql);
$t=0;
for($i=0;$i<$l_num;++$i){
     $l_Var = DB_mysql_fetch_array($l_sql,MYSQL_ASSOC);
     $no = $l_Var["birth"];
     $this->char[$no] = new char($no);
     $this->char[$no]->SetUser($this->id);
     $t++; }
$end_time=caclutime();
$total=$end_time-$begin_time;
echo "$total 秒 for 執行 $t 次:<br />";//顯示結果

$begin_time=caclutime();
$l_sql2 = DB_mysql_query($sql); //時間測試-while
$t=0;
while($l_Var = DB_mysql_fetch_array($l_sql2,MYSQL_ASSOC)){
$no = $l_Var["birth"];
$this->char[$no] = new char($no);
$this->char[$no]->SetUser($this->id);
$t++; }
$end_time=caclutime();
$total=$end_time-$begin_time; 

echo "$total 秒 while 執行 $t 次:";//顯示結果                      


在同時執行18次之下,連跑10次取平均值
平均0.0686039924622 秒 for 執行 18 次:
平均0.0263319015503 秒 while 執行 18 次: 
 
在同時執行2次之下,連跑10次取平均值
0.00348091125488 秒 for 執行 2 次:
0.00146985054016 秒 while 執行 2 次:
 
最近更新 ( 週四, 12 十一月 2009 10:28 )  
 

回應  

 
0 #1 嚴重 2009-10-27 07:52
引用
 

新增回應


驗證碼
更新