Если моя таблица User
имеет несколько полей, которые можно запросить (например, DepartmentId, GroupId, RoleId), будет ли разница в скорости, если я создам индекс для каждой комбинации эти поля?
Под «запрашиваемым» я имею в виду экран запроса, где конечный пользователь может выбирать записи на основе отдела, группы или роли, выбирая из раскрывающегося списка.
На данный момент у меня есть индекс для DepartmentId, GroupId и RoleId. Это единственный неуникальный индекс для каждого поля.
Если конечный пользователь выбирает «любого из группы B», SQL выглядит так:
select * from User where GroupId = 2
Наличие индекса в GroupId должно ускорить это.
Но если конец пользователь выбирает «любой в группе B и в роли C», SQL будет выглядеть так:
select * from User where GroupId = 2 and RoleId = 3
Наличие индексов по GroupId и RoleId по отдельности может не иметь никакого значения, верно?
Лучшим индексом для этого поиска будет, если У меня был один индекс, охватывающий как GroupId, так и RoleId.
Но если это так, то это будет означать, что мне понадобится индекс для каждой комбинации запрашиваемых полей. Поэтому мне понадобятся все эти индексы:
Может кто-нибудь пролить некоторый свет на это? Я использую MySQL, если это имеет значение.