Краткий ответ:
Индексы ускоряются SELECT
и замедляются INSERT
.
Обычно лучше иметь индексы, потому что они ускоряются на select
больше, чем замедляются insert
.
На UPDATE
индекс может ускорять вещи наверх, если в предложении WHERE
используется индексированное поле, и замедлять работу, если вы update
используете одно из индексированных полей.
Как узнать, когда следует использовать индекс
Добавьте EXPLAIN
перед вашим оператором SELECT
.
Примерно так:
EXPLAIN SELECT * FROM table1
WHERE unindexfield1 > unindexedfield2
ORDER BY unindexedfield3
Укажет вам, сколько MySQL придется сделать для каждого изнеиндексированные поля.
Используя эту информацию, вы можете решить, стоит ли добавлять индексы или нет.
Объяснение также может сказать вам, лучше ли отбрасывать и индексировать
EXPLAIN SELECT * FROM table1
WHERE indexedfield1 > indexedfield2
ORDER BY indexedfield3
Если выбраны очень маленькие строки или MySQL решил игнорировать индекс (он делает это время от времени) , тогда вы могли бы также удалить индекс,потому что замедляет ваши insert
с, но не ускоряет select
.
С другой стороны, это можетТак что ваше утверждение select недостаточно умен.
(извините за сложность ответа, я пытался сделать его простым, но не получилось).
Ссылка:
Индексы MySQL - каковы лучшие практики?