mysql查询哪个是最好的

时间:2011-03-01 09:45:30

标签: php mysql

我想知道哪种方法比那些sql方法更好(更快);

第一种方法:

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()数组$ users;


第二种方法

$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

2 个答案:

答案 0 :(得分: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,它将两个变量放入堆中。

答案 1 :(得分:0)

两者基本相同。它们执行相同的查询并以相同的方式检索结果。第一种方法的优点是它返回一个数据数组列表,每个数组都代表数据库中的记录。所有人都可以以任何方式使用。第二种方法只返回一个字符串。整个while循环在那里没用。

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