我从0,15 - 15,15 - 30,15等DESC中的数据库中获取一些注释,我想反向显示它们,所以我使用了array_reverse()函数。
最快?使用array_reverse或更改SQL查询以将其反转
答案 0 :(得分:3)
使用ORDER BY field DESC
通常会更快更容易阅读(并且对脚本的内存消耗略微更轻),但是如果你已经写过它并不是这样的话重要的是,我会重新做一遍。
但是,在某些情况下,您实际上希望坚持使用查询后数组反转。例如,您通过索引订购的地方:
SELECT table.field
FROM table USE INDEX ([index])
WHERE ...
ORDER BY [index] DESC
使用ASC
或DESC
可能要快得多,因此您只想运行更快的订单,然后再将其撤消:请参阅MySQL ORDER BY DESC is fast but ASC is very slow
此外,如果mysql查询因排序而变得复杂得多,则反转数组可能会更快。例如,如果您只想查询返回五个结果的查询的最后三个结果,但是您希望它们有序desc,则必须运行子查询,如:
SELECT * FROM (
SELECT ...
ORDER BY field ASC
LIMIT 3
) AS sq ORDER BY field DESC
在这种情况下,运行起来可能要容易得多(也许更快):
SELECT * FROM table WHERE ... ORDER BY field DESC LIMIT 3
并在结果返回后反过来。
答案 1 :(得分:0)
如果您可以使用它,即它不会影响代码的其余部分,那么请将查询更改为按ASC排序。
如果你不能在使用asort()之类的东西重新排列数组之前需要遍历结果集并创建一个数组。