Каков наилучший подход к получению последних х записей? Использование MySQL Limit и ORDER DESC?

Мне было интересно, если есть какие-либо другие лучшие / лучшие практики, то это, насколько производительность или оптимизация.

РЕДАКТИРОВАТЬ: я использую PHP7. Должен был прояснить это, я прошу прощения. Я делаю волонтерский проект для местной некоммерческой организации, и он настроен так:

Стол: волонтер

pk: v_id

Итак, что я делаю, это:
SELECT * from Volunteer ORDER BY v_id DESC LIMIT 25;

(Они хотят, чтобы последние 25 отображались в настоящее время для отчета «последние журналы».)

РЕДАКТИРОВАТЬ 2: Единственная причина, по которой я спрашиваю об этом сейчас, мы нажали 10 тыс. Журналов добровольцев в системе, и я начинаю понимать, что MON-FRI они могут добавлять от 50 до 100 (или более) журналов в день, так что это быстро складывает

1

Решение

Если вы можете сделать это программно
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. Если вам нужно больше оптимизации, чем это, вы можете рассмотреть возможность архивации старых данных и частой очистки.

-1

Другие решения

Попробуйте вот так. Пока это самый простой

Select * from tablename order by column desc limit 5
0

По вопросам рекламы [email protected]