PHP / SQL:ORDER BY还是sort($ array)?

时间:2009-03-17 17:21:34

标签: php sql arrays

您认为在PHP脚本中哪个更快:

$query = "SELECT... FROM ... ORDER BY first_val";

while($row = odbc_fetch_array($result))
    $arrayname[] = array(
        "first_key" => $row['first_val'],
        "second_key" => $row['second_val'],
        etc...
    );
sort($arrayname);

6 个答案:

答案 0 :(得分:14)

这取决于许多因素,我甚至不知道该怎么做。

但通常,您在数据库端执行排序。

索引,整理以及所有这些,他们都有所帮助。

答案 1 :(得分:4)

  

您认为在php脚本中哪个更快:

{1}}不在PHP脚本中执行 - 它在PHP脚本检索数据之前在数据库中执行。抱歉,如果这看起来很迂腐,我只想确保你明白这一点。

无论如何,我使用ORDER BY的原因是数据库可以访问数据库中的索引和缓存页面。 PHP中的排序当然会对内存中的数据进行排序,但无法访问任何索引。

答案 2 :(得分:2)

如果有序字段被索引,我可能会说SQL查询。如果没有,我不确定,但我无法想象除非你处理的是大量的行,否则它将会过于明显。

答案 3 :(得分:2)

ORDER BY几乎总是更快。

答案 4 :(得分:2)

在我看来,没有什么可以实际计时,所以你真的,确实知道:

$time_start = microtime(true);

// Try the ORDER BY and sort($array) variants here

$time_end = microtime(true);
$time = $time_end - $time_start;

echo "It took $time seconds";

答案 5 :(得分:2)

如果第一个查询有LIMIT,并且查询匹配的行集没有LIMIT远大于LIMIT,那么查询上的ORDER BY肯定会更快。

也就是说,如果你需要10,000行表中的前50行,那么让数据库为你排序要快得多,并且只返回前50行,而不是检索所有10,000行并排序他们自己在PHP中。这可能代表了在实际应用中将发生的绝大部分内容

如果在任何情况下,PHP中的排序甚至可以比较,那么它们就很少了。

此外,SQL排序功能更强大 - 对多列,子查询,聚合函数的返回值等进行排序是微不足道的。