Индексы могут влиять на производительность предложений ORDER BY
.Эта страница справочника MySQL , вероятно, стоит вашего времени.По сути, если вы упорядочиваете по столбцу, который является частью индекса, который MySQL использует для запроса, MySQL может использовать индекс для сортировки, а не сами данные.
В вашем конкретном запросе тот факт, чтоИндекс столбца DATE
не имеет значения, так как этот индекс, вероятно, не используется в вашем запросе.Ваш оператор WHERE
содержит items.ACTIVE
и items.DELETED_AT
, и если эти столбцы имеют индекс, который используется для WHERE
, который не включает столбец DATE
, MySQL не может использовать этот индекс для сортировкина DATE
и, скорее всего, прибегает к сортировке файлов.
Если вы сможете найти индекс, который может использоваться как WHERE
, так и ORDER BY
, вы получите оптимизациюувеличение.В этом случае items.ACTIVE
выглядит как столбец с низкой кардинальностью, поэтому, предполагая, что items.DELETED_AT
является датой, я бы, вероятно, попробовал индекс для этой таблицы, например INDEX(DELETED_AT,DATE)
.
Используйте EXPLAIN SELECT...
чтобы узнать больше о том, что там происходит, вы можете получить дополнительную информацию.