программист, python, django, mysql, git, hg, linux
1) ну, можно сказать что SELECT * создает нагрузку, если таблица широкая - тогда мускуль все колонки копирует в область памяти для сортировки. надо выбирать только то что нужно.
2) еще нужно посмотреть есть ли B-tree-индекс для id - помогает для сортировки иногда.
3) еще хинт - иногда, для больших (от сотен тысяч записей) таблиц лучше вытянуть только айдишники записей SELECT id FROM post ORDER BY id DESC LIMIT 5
- тогда при наличии B-tree-индекса сортировка вообще не будет производится - все уже отсортировано в индексе. А потом тянуть остальные поля отдельным запросом. SELECT ... FROM post WHERE id in (...)
и сортировать на клиенте :)
могу предположить следующее: таблица post очень большая (много записей), в этом случае индекс по первичному ключу может не уместиться в буфере (см. настройки), следовательно СУБД будет читать все значения таблицы, сортировать их и выдавать результат