Много составных индексов или один на много полей?

Делается гибкий поиск как в магазинах электроники по параметрам.
Есть поле A вместе с ним часто будут запрашиваться другие поля A+B иногда до 5 полей A+B+C+D+E иногда A+F+G сейчас есть несколько составных индексов типа A+B или A+G но понятно что в любой момент вылезти запрос секунды на 2 который запрашивает колонку которой нет в составном индексе.

Что лучше дальше пытаться подобрать оптимальные варианты составных индексов, или сделать один составной индекс сразу на 10 полей от А до G например?
Ситуация осложняется тем что данные обновляются очень часто и минимальное время UPDATE крайне важно.
  • Вопрос задан
  • 525 просмотров
Решения вопроса 3
qonand
@qonand
Software Engineer
Что лучше дальше пытаться подобрать оптимальные варианты составных индексов,

Здесь нужно знать меру, не стоит забывать - чем больше индексов тем больше будет места на сервере занимать база и тем медленнее будет производиться запись данных.
или сделать один составной индекс сразу на 10 полей от А до G например?

в этом случае индекс не будет использоваться, читайте как устроены индексы в MySQL ruhighload.com/post/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82...

вообще рекомендовал бы Вам посмотреть в сторону поисковых движков...
Ответ написан
@deliro
Переехать на постгрес, использовать jsonb с индексом и эластик.
Ответ написан
@edb
SQL
если поле А достаточно селективное и всегда участвует в поиске, то одного индекса на А и хватит. А если не хватит, то как выше уже заметили, надо смотреть в сторону поисковых движков. Поле А достаточно селективное, если каждый элемент содержится не более чем в 5% записей. 5% взято с потолка, но это хорошее значение для таблиц до миллиона записей.
Но я бы сначала составил тестовый сценарий, а потом уже занимался оптимизацией.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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