[MySQL] Порядок сортировки и LIMIT
![](/images/graemlins/grin.gif)
Хочу узнать, сможет ли Шаллер с минимальными затратами крови перевернуть треды.
ORDER BY '2015-01-01' - xxx ASC LIMIT 10
SELECT * FROM (SELECT myfields FROM mytables ORDER BY myorder ASC LIMIT num) as qqq ORDER BY myorder DESC
в общем случае хз, а зачем тебе в общем случае?
Интересно.
SELECT myfields FROM mytables ORDER BY myorder DESC LIMIT ($total-$num $num
SELECT myfields FROM mytables ORDER BY myorder DESC LIMIT (COUNT(myfild)-$num $num
SELECT myfields FROM mytables ORDER BY myorder DESC LIMIT ($total-$num $num
хотя это не то что просили )
Всё равно вложенные селекты выходят.
Неужели нет никакого нормального способа это проделать?
В принципе, как вариант - чтобы расставлялись номера строк во внутреннем селекте (в моём первом примере а потом сортировать уже по этим номерам (а не по первоначальному условию сортировки но это, насколько я понимаю, в простом mysql не сделать - нужны какие-то "триггеры" или что-то такое...
не понимаю, а в чем проблема вложенных запросов?
Например, будет упорядочиваться уже упорядоченный запрос (1й вариант из моих постов или два раза будет проверяться условие WHERE (2й вариант из моих постов да и простой запрос переписывать под то, чтобы сортировать в обратную сторону в обоих случаях - не так уж и легко, как просто, например, заменить ASC на DESC.
а в первом при первом селекте обрабыватывается 10 (например) и при втором селекте 10, если делать ордер бу по индексному полю, то потяре времени будет незначительно по сравнению с генерацией кода по этой инфе
![](/images/graemlins/smile.gif)
А если делается order by что-то, что достаточно медленно считается?
вообще при втором селекте будет 10 записей (опять же например) против 10000 общего числа записей, помоему соответсвенно он будет в разы быстрее это делать
Все эти способы решения с вложенными селектами - слишком иззвращённые, должен быть способ сделать всё это напрямую.
по моему опыту, MySQL такую оптимизацию не умеет (правда, 5.x не пробовал): в любом случае всё выбирает, и всё сортирует
Если б умел, форум бы намного быстрее работал
![](/images/graemlins/tongue.gif)
Оставить комментарий
kruzer25
Чтобы получить первые десять записей в прямом порядке, можно использовать ORDER BY xxx ASC LIMIT 10, чтобы последние десять в обратном - ORDER BY xxx DESC LIMIT 10, а как получить первые 10 в обратном порядке, без вложенных запросов?