soh*_*970 7 mysql sql database indexing
如果我的User表有几个可查询的字段(例如DepartmentId,GroupId,RoleId),如果我为这些字段的每个组合创建索引,它会产生任何速度差异吗?
通过"可查询",我指的是一个查询屏幕,最终用户可以通过从下拉列表中选择,根据部门,组或角色选择记录.
目前,我有一个关于DepartmentId,GroupId和RoleId的索引.这是每个字段的单个非唯一索引.
如果最终用户选择"B组中的任何人",则SQL看起来像:
select * from User where GroupId = 2
Run Code Online (Sandbox Code Playgroud)
拥有GroupId的索引应该加快速度.
但是如果最终用户选择"B组和角色C中的任何人",则SQL将如下所示:
select * from User where GroupId = 2 and RoleId = 3
Run Code Online (Sandbox Code Playgroud)
单独拥有GroupId和RoleId的索引可能没有任何区别,对吧?
为寻求更好的指标是,如果我有一个指数跨越两个 groupId和角色ID.
但如果是这样的话,那就意味着我需要为可查询字段的每个组合都有一个索引.所以我需要所有这些索引:
任何人都可以对此有所了解吗?我正在使用MySQL,如果这有所作为.