Guns基于SpringBoot 2,致力于做更简洁的后台管理系统,完美整合springmvc + shiro + mybatis-plus + beetl!Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块),可以直接作为一个后台管理系统的脚手架!
3.86k
stars
1.59k
forks
source link
优化sys_dict_type中的索引 #74
Open
wtune opened 4 years ago
问题
表sys_dict_type中缺少一些需要的索引,通过测试,我们发现加上这些索引可以极大地提高相关查询的性能(高达80%),需要添加的索引和影响的查询分别如下所示:
1.sys_dict_type.code
code本质上是一个唯一字段,在DictTypeService中可以看出在更新和插入的时候都要判断是否已存在相同的code和name,同时在查询表的时候也经常会将code或name作为查询条件(例如DictTypeService#findPageBySpec),在这些字段上建立索引可以极大的提高相关查询的效率。
2.sys_dict_type.name
同上,name也是一个唯一字段,经常在更新和插入时会进行重复判断,同时也会在查询中作为条件,因此也应该添加索引。
3.sys_dict_type.sort
由DictTypeService#findPageBySpec产生的查询总是会用sort字段进行排序,因此应该在sort字段上加索引从而加快相关查询。
4.sys_dict_type.(system_flag, sort)
测试中我们发现,由DictTypeService#findPageBySpec产生的查询经常会使用system_flag作为查询条件,并使用sort对查询结果进行排序,为了避免只有sort产生的row lookup,需要加上(system_flag, sort)的复合索引来避免该问题。
解决方法
添加缺少的索引 sys_dict_type.code sys_dict_type.name sys_dict_type.sort sys_dict_type.(system_flag, sort)