Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

优化sys_dict_type中的索引 #74

Open
wtune opened this issue Mar 20, 2020 · 0 comments
Open

优化sys_dict_type中的索引 #74

wtune opened this issue Mar 20, 2020 · 0 comments

Comments

@wtune
Copy link

wtune commented Mar 20, 2020

问题

表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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant