Мне было интересно, если есть какие-либо другие лучшие / лучшие практики, то это, насколько производительность или оптимизация.
РЕДАКТИРОВАТЬ: я использую PHP7. Должен был прояснить это, я прошу прощения. Я делаю волонтерский проект для местной некоммерческой организации, и он настроен так:
Стол: волонтер
pk: v_id
Итак, что я делаю, это:
SELECT * from Volunteer ORDER BY v_id DESC LIMIT 25;
(Они хотят, чтобы последние 25 отображались в настоящее время для отчета «последние журналы».)
РЕДАКТИРОВАТЬ 2: Единственная причина, по которой я спрашиваю об этом сейчас, мы нажали 10 тыс. Журналов добровольцев в системе, и я начинаю понимать, что MON-FRI они могут добавлять от 50 до 100 (или более) журналов в день, так что это быстро складывает
Если вы можете сделать это программно
ORDER
Это ASC
с LIMIT X
а затем перебрать записи в обратном направлении.
Если вы дадите нам свой язык (PHP, node (javascript), java и т. Д.), Мы можем помочь вам с обратным циклом, но он выглядит примерно так:
for(i=rows.length-1;i>=0;i--){
//do your stuff here
}
Если вы ДОЛЖНЫ сделать это в MySQL
SELECT
ваши результаты ASC
с LIMIT X
как подзапрос, а затем обернуть в запросе ORDER
DESC
SELECT
*
FROM
(
SELECT
somecol
FROM
sometable
ORDER BY
the_date ASC
LIMIT 100
) as a
ORDER BY
the_date DESC
ОБНОВИТЬ: То, как вопрос был задан вначале, звучало так, как будто вы хотели получить последние результаты X, заказал DESC. Я оставлю свой ответ на месте, если кто-нибудь еще придет сюда в поисках этого.
Что вы делаете сейчас с ORDER BY
а также LIMIT
это оптимальный способ сделать это. Для оптимизации вы можете захотеть SELECT
только столбцы, которые вам нужны, и убедитесь, что у вас есть уникальный индекс v_id. Если вам нужно больше оптимизации, чем это, вы можете рассмотреть возможность архивации старых данных и частой очистки.
Попробуйте вот так. Пока это самый простой
Select * from tablename order by column desc limit 5