2011-03-01 66 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循环在那里没用。

所以第二个可能会更快,因为它只检索单行,但从这里看起来更像是一个错误,而不像实际的实施决策。