ALTER TABLE jobs
ADD INDEX(created_at);
(Да, существует синтаксис CREATE INDEX
, который соответствует аналогу.)
Затем в запросе выполните
ORDER BY created_at DESC
Однако с 15M строкамиэто может все еще займет много времени.Будете ли вы фильтровать (WHERE
)?LIMITing
?
Если вы действительно хотите вернуть пользователю 15M строк - ну, это большой сетевой трафик, и , что займет много времени.
Детали MySQL
Независимо от объявления индекса или версии, ASC/DESC
в ORDER BY
будет учитываться.Однако для этого может потребоваться «сортировка файлов» вместо использования порядка, встроенного в BTree индекса.
В некоторых случаях WHERE
или GROUP BY
может привести к тому, что Оптимизатор испортит любойиндекс.Но если это возможно, то ...
(до MySQL 8.0) Хотя можно объявить индекс DESC
, атрибут игнорируется.Тем не менее, ORDER BY .. DESC
является чтимым;он сканирует данные в обратном направлении.Это также работает для ORDER BY a DESC, b DESC
, но не при наличии комбинации ASC
и DESC
в ORDER BY
.
MySQL 8.0 действительно создает индексы DESC;то есть, BTree, содержащее индекс, сохраняется «назад».