PHP обратный массив SQL или обратный в запросе SQL - PullRequest
0 голосов
/ 31 января 2012

Я получаю некоторые комментарии из базы данных в DESC от 0,15 - 15,15 - 30,15 и так далее, и я хочу показать их в обратном порядке, поэтому я использую функцию array_reverse ().

Что быстрее?Использование array_reverse или изменить запрос SQL, чтобы изменить его

Ответы [ 2 ]

3 голосов
/ 31 января 2012

Использование ORDER BY field DESC - это, как правило, будет быстрее и легче для чтения (и немного меньше для потребления памяти сценарием), но если вы уже написали это, это не так важно, что я вернусь, чтобы сделать это заново.

Однако в некоторых случаях вам действительно нужно придерживаться обращения к массиву после запроса. Например, когда вы заказываете по индексу:

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

Возможно, будет гораздо быстрее использовать ASC или DESC, поэтому вы просто захотите выполнить более быстрый порядок и затем изменить его на обратный: см. MySQL ORDER BY DESC работает быстро, но ASC очень замедлять

Кроме того, в случаях, когда запрос 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

и обратный результат после их возвращения.

0 голосов
/ 31 января 2012

Если вам это сойдет с рук, то есть это не повлияет на остальную часть кода, измените запрос на сортировку по ASC.

Если вы не можете, вам нужно будет перебрать набор результатов и создать массив, прежде чем использовать что-то вроде asort () для перестановки массива.

...