Добрый день.
Имеется таблица posts, в которой 24 различных поля. В эту таблицу развлечения ради была добавлена пара сотен тысяч записей и исследуется её поведение на сайте.
ID | post_date | ... | karma |
---|
1 | 2013-10-25 12:53:54 | ... | 5 |
... | ... | ... | ... |
210000 | 2014-10-25 12:53:54 | ... | 2 |
Поля ID и post_date (формат datetime) проиндексированы. Требуется выбрать последние пять записей (то есть с сортировкой по дате).
К сожалению, простейший запрос вроде
SELECT ID FROM posts ORDER post_date DESC LIMIT 0, 5
SELECT ID FROM posts WHERE post_date BETWEEN ... AND ... ORDER post_date DESC LIMIT 0, 5
начинает забирать на себя более 0.1с времени, а при увеличении количества записей оно будет лишь расти. Причем на время обработки не влияет наличие индекса на post_date.
Вопрос в следующем: есть ли какой-либо способ (вроде добавления особенного индекса) в данной ситуации, помимо уменьшения выборки с помощью поля ID, который позволит избежать полного перебора строк в таблице?