@Vadim1899

Поставить индексы на каждое поле?

Привет! Есть сайт в стадии разработки, бд пока без индексов. Стоит задача - оптимизировать бд, проставив индесы. Но тк сайт еще в разработке, пока не понятно, какие индексы нужны, а какие нет. Но и выкатывать сайт вообще без индексов не очень идея. Если я на каждый столбец, который используется в WHERE добавлю одиночные индексы, не ухудшит ли это производительность?

Смогу ли я потом изменить индексы (когда записей уже будет много)? Затратно ли это по ресурсам - удаление индексов. создание новых, изменение?

Часто запрос имеет такой вид:
SELECT ... FROM table WHERE field1 = :field1 AND field2 = field2 ....

то есть многие запросы начинаются так, но потом имеют разное продолжение в WHERE Я правильно понимаю, что тогда лучше сделать один общий индекс для field1 и field2?
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Akina
Сетевой и системный админ, SQL-программист.
Если я на каждый столбец, который используется в WHERE добавлю одиночные индексы, не ухудшит ли это производительность?

Абсолютно бессмысленное мероприятие - одна копия таблицы может использовать только один индекс. Так что надо делать композитные индексы. Немного - иначе просядут модифицирующие запросы, а композит может использоваться и по префиксу, и как покрывающий.

пока не понятно, какие индексы нужны, а какие нет.

Вот когда закончите в основе, тогда и будете смотреть, какие запросы частые, какие критичные, и подбирать минимальный пак индексов для их оптимизации.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы