我从DESC中的数据库中获取了一些注释,从0,15 - 15,15 - 30,15等等,我想以相反的方式显示它们,所以我使用了array_reverse()函数。
什么是最快的?使用array_reverse或更改SQL查询来反转它。
发布于 2012-01-31 22:17:14
使用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查询由于排序而变得更加复杂的情况下,反转数组可能会更快。例如,如果您只想要返回五个结果的查询的最后三个结果,但希望对它们进行排序,则必须运行子查询,如下所示:
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返回结果后,反转结果。
发布于 2012-01-31 22:18:14
如果你可以摆脱它,也就是说,它不会影响你的代码的其余部分,那么将查询改为按ASC排序。
如果不能,则需要遍历结果集并创建一个数组,然后再使用asort()之类的方法重新排列该数组。
https://stackoverflow.com/questions/9080933
复制相似问题