Ни одна из них не является особенно хорошей стратегией, но если бы мне пришлось выбирать, я бы выбрал несколько отдельных индексов.
Причина в том, что индекс можно использовать, только если вы используете все поля в любом полномпрефикс индекса.Если у вас есть индекс (a, b, c, d, e, f), то это прекрасно работает для запроса, который фильтрует по a
, или по запросу, который фильтрует как по a
, так и по b
, но это будетбесполезно для фильтрации запросов только на c
.
Нет простого правила, которое всегда работает для выбора лучших индексов.Вам нужно посмотреть на типы запросов, которые вы делаете, и выбрать индексы, которые ускорили бы эти конкретные запросы.Если вы тщательно продумаете порядок столбцов, вы можете найти небольшое количество индексов, которые будут полезны для нескольких разных запросов.Например, если в одном запросе вы фильтруете как a
, так и b
, а в другом запросе вы фильтруете только b
, то индекс для (b, a) будет использоваться обоими запросами, но индекс an (a,б) не будет.