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