您认为在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);
答案 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排序功能更强大 - 对多列,子查询,聚合函数的返回值等进行排序是微不足道的。