R
R
Ruslan Ibragimov2016-02-05 20:52:22
MySQL
Ruslan Ibragimov, 2016-02-05 20:52:22

How to get last N records without using ORDER BY & OFFSET?

Друзья всем привет, имеется таблица с личными сообщениями, выборка идет по ID диалога, нужно получить последние 20 сообщений не используя ORDER и OFFSET, так как такой запрос будет оч плохо выполняться на большой базе, какой вариант вы видите?
У самого пока только одна идея пришла в голову во время составления вопроса.
Так как есть еще таблица диалогов, там хранятся инфа о диалоге кто с кем, ID последнего сообщения и количество всего.. думаю добавить туда еще одно поле ID последнего 20го сообщения, то есть как первое сообщение отправляется сразу записывается в таблицу с диалогами ID этого 20го, он же пока первый.. Далее держать где то в мемкеше счетчик и считать до 20ти, потом обновлять этот prev20 ID и делать выборку where ID > prev20

Answer the question

In order to leave comments, you need to log in

1 answer(s)
A
Andrew, 2016-02-06
@iCoderXXI

ORDER BY on regular autoincrement IDs work great with indexes even on millions of records... I see no reason to refuse ORDER BY id DESC LIMIT 20

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question