Mysql - Улучшение производительности «ORDER BY» с индексом

Mysql - Улучшение производительности «ORDER BY» с индексом

Могу ли я улучшить «ORDER BY», добавив индекс по fld_date.

 SELECT * FROM t1 WHERE fld1='XXX' fld2='XXX' ORDER BY fld_date;

Запрос использует индекс (fld1,fld2 - объединенный индекс) в предложении where. Поскольку ORDER BY не соответствует индексу в точности, если я добавлю индекс с fld_date, будет ли это полезно для улучшения производительности ORDER BY fld_date. ?

решение1

Вам следует добавить индекс по (fld1, fld2, fld_date). Обратите внимание, что это будет работать только в том случае, если fld1 и fld2 установлены на точное соответствие в WHEREпредложении, неточные выражения, такие как <или >отключат индекс для упорядочивания.

решение2

Обратите внимание на кластеризованные индексы. В некоторых случаях их можно использовать для повышения производительности при работе с большими наборами данных. По-видимому, именно это и использовали базы данных в стиле SQL, когда вычислительная мощность была весьма ограничена.

Источник: Я работаю со старшим разработчиком, который упомянул, что они будут использовать индекс, чтобы избежать необходимости выбирать фактические значения в базе данных из-за ограничений пропускной способности.

Согласно документации, которую я проверил, это всего лишь «первичные ключи», но они уже не те, что были раньше, и, возможно, придется покопаться, чтобы извлечь из этого какой-то скрытый выигрыш в производительности.

Дополнительную информацию можно найти здесь:https://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html

См. заголовок «Влияние на оптимизацию ORDER BY» в указанной статье.

Связанный контент