一个报表查询中,关联查询异常的慢,并且都建有外键索引。
先展示下sql条件与耗时以及触发的索引。
优化前:
耗时久,A表是收费表,条件是收费表结算时间
门诊收费表结算时间当条件.png
触发的索引内容和性能等级
门诊收费表结算时间当条件(索引引用展示).png
优化后:
结算时间改为社保结算表的结算时间(和门诊收费表有对应关系,结算时间一致)
优化条件后.png 优化条件后索引引用展示.png
由于底层基础不够扎实,目前的优化思路与理解来自:
知乎数据库关联查询.png
个人思路:由于收费分社保和非社保,自然社保结算表数据相对较少,并且主业务是查询社保结算。因此社保表优先,而关键条件确是收费表来关联,所以改为社保表的结算时间。减少了收费表与社保表的扫描行数速度得到提升。
疑问:个人理解是否正确?sql中u表是用户信息表关联条件并未改变,却在这次改动中索引类型得到提升:eq_ref
网友评论