PHP反向SQL数组或SQL查询中的反向

时间:2012-01-31 14:10:19

标签: php sql reverse

我从0,15 - 15,15 - 30,15等DESC中的数据库中获取一些注释,我想反向显示它们,所以我使用了array_reverse()函数。

最快?使用array_reverse或更改SQL查询以将其反转

2 个答案:

答案 0 :(得分:3)

使用ORDER BY field DESC 通常会更快更容易阅读(并且对脚本的内存消耗略微更轻),但是如果你已经写过它并不是这样的话重要的是,我会重新做一遍。

但是,在某些情况下,您实际上希望坚持使用查询后数组反转。例如,您通过索引订购的地方:

SELECT table.field
FROM table USE INDEX ([index])
WHERE  ...
ORDER BY [index] DESC

使用ASCDESC可能要快得多,因此您只想运行更快的订单,然后再将其撤消:请参阅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()之类的东西重新排列数组之前需要遍历结果集并创建一个数组。