Когда вы беспокоитесь о производительности, вам, вероятно, не следует отказываться от использования заказа слишком рано.
Подобные запросы могут быть реализованы как запросы Top-N, поддерживаемые соответствующим индексом, который выполняется очень быстро, потому что не нужно сортировать всю таблицу, даже строки выборки, поскольку данные уже отсортированы индекс.
пример:
select *
from table
where A = ?
order by creation_date
limit 10;
без соответствующего индекса будет медленно, если у вас много данных. Однако, если вы создадите такой индекс:
create index test on table (A, creation_date );
Запрос сможет начинать выборку строк в правильном порядке без сортировки и останавливаться при достижении предела.
Рецепт : поместите столбцы where в индекс, а затем порядок по столбцам.
Если предложение where отсутствует, просто поместите порядок в индекс. Порядок по должен соответствовать определению индекса, особенно если есть смешанные asc / desc ордера.
Индексированный запрос Top-N является определяющим фактором производительности - обязательно используйте их.
Мне мало ссылок для дальнейшего чтения (все мои):
Как эффективно использовать индекс в запросе mysql
http://blog.fatalmind.com/2010/07/30/analytic-top-n-queries/ (Oracle centric)
http://Use -The-Index-Luke.com / (пока не охватывает запросы Top-N, но это будет в 2011 году).