2011-03-01 62 views
0

我想知道哪種方式比那些sql方法更好(更快);mysql查詢哪個是最好的

第一方法:

public static function getlistusers($limit=88888888888888) { 
$sql = "SELECT id,name FROM users order by id desc limit 0,$limit"; 
$st = mysql_query($sql) or die(mysql_error()); 
$list = array(); 
while ($row = mysql_fetch_assoc($st)) { 
$picss = new users($row); 
$list[] = $picss; 
} 
return (array ("users" => $list)); 
@mysql_free_result($st); 

用於打印輸出,可以使用

的foreach()數組$用戶;


第二個方法

$sql = "SELECT id,name FROM users order by id desc limit 0,$limit"; 
$st = mysql_query($sql) or die(mysql_error()); 
while ($row = mysql_fetch_assoc($st)) { 
extract($row); 
return "Id: $id and The Name is : $name"; 
} 
@mysql_free_result($st); 
} 

===========

我想知道這是SQL加載速度更快,安。

問候 Al3in

+3

兩者都是相同的查詢在哪裏是你在談論的PHP代碼的區別? – 2011-03-01 09:48:06

+0

爲什麼'極限'這麼多? – diEcho 2011-03-01 09:49:20

+0

兩者是相同的,只有php代碼diffrent不是sql – Efazati 2011-03-01 09:54:31

回答

2
$sql = "SELECT id,name FROM users order by id desc limit 0,$limit"; 
$st = mysql_query($sql) or die(mysql_error()); 
while ($row = mysql_fetch_assoc($st)) { 
    extract($row); 
    return "Id: $id and The Name is : $name"; 
} 
@mysql_free_result($st); 

我懷疑這種做法甚至會工作。因爲即使將其限制爲1或100萬,由於return "Id: $id and The Name is : $name";,循環只會運行一次。所以如果你將這個和其他方法進行比較,另一種方法顯然會更好。除非你將數組分配給數組而不是返回,在這種情況下,第二種方法有一個不必要的函數調用extract,它將兩個變量放入堆中。

0

兩者基本相同。他們執行相同的查詢並以相同的方式檢索結果。第一種方法的優點是它返回一個數據數組的列表,每個數組表示數據庫中的記錄。所有的個人都可以使用任何你想要的方式。第二種方法只返回一個字符串。整個while循環在那裏沒用。

所以第二個可能會更快,因爲它只檢索單行,但從這裏看起來更像是一個錯誤,而不像實際的實施決策。