图中,因为cf_borrow中数据量过大,用in的话效率特别慢,大概在一个小时左右吧,换成exists效率也不会快哪去。不明白这帮同事为啥用这sql扛了这么久。也不知道优化一下。
2种解决方案 num1:将In里的子查询单独拎出来在queryHrSaSunAccount之前之前用一个方法提前查出来拼成字符串,再传参过去再查询。我当时测试是把in里边的sql在数据库里先执行,然后结果集放在in里边,效率很快。
num2:也是我采用的方法,在fiance_borrow_detail加索引,但要注意,要加在borrow_id上,如果fiance_borrow_detail数据量大的话batch_no也要加,但子查询时主要起作用的是borrow_id。