查询优化

查询优化

Scroll Down

场景

批量加入几十万数据查询数据列表时,发现慢sql查询两条 分别为1.56秒和1.58秒
一个是具体数据的查询,另外一个是总条数的查询

解决

1、查找pagehelper官方文档,了解到可以自定义查询count,避免使用他本身的count求和
(select count(0) form (your queryList sql))。
自定义方法:在查询具体数据的后面加上 _count,并且入参和查询具体数据的sql一致。出参固定为resultType="Long"即可。

<select id="xx_COUNT"  parameterType="xx" resultType="Long">
    SELECT count(0)
    FROM xx ii LEFT JOIN xx u2 ON u2.user_id = ii.user_id
    WHERE ii.xx = 0 AND ii.del_flag = 0 AND ii.xx LIKE concat(left(#{xx}, 4), '%')
</select>

2、使用mysql空间函数替换计算公式(ST_Distance_sphere)
速度和之前保持,但是提高了sql语句的简洁性,也是不错的。

3、优化sql查询,之前是select xx xx from (select xx xx from)
优化掉了外层select,速度也有明显提升。之后写sql也要注意避免了。

最终0.4s查询了出来,提升还是很大的