Heim > Fragen und Antworten > Hauptteil
比如:
查询会员列表的话,where后面带很多个if test条件是不是会影响效率,还是重写个sql,但是如果每个条件查询都重写sql,sql又太多了,显得很乱。该怎么选择?
天蓬老师2017-04-18 10:30:32
效率不会影响多少,毕竟都是一些内存操作,Mybatis
动态SQL
一个最大的问题就是IF...TEST
太多的话,后期维护会很累,因为一个SQL
调用方很很多,到时候找组合会很麻烦,SQL调优会很吃力,所以尽量每个查询都写一个(分页除外),如果实在需要IF...TEST
,建议不能太多
迷茫2017-04-18 10:30:32
1、where后面带很多个if test条件的情况在查询功能里很常见,十多二十个查询条件也很见惯;
2、MyBatis既然提供if test标签功能,肯定是有优化过得,比起你写多个SQL再通过Java代码判断分流,肯定效率高很多;
3、执行速度影响的大块是数据库服务器的硬件配置和数据库平台,作为普通程序员,还不需要考虑那么多,实在担心这个问题,也可以将自己的代码放在测试环境进行压力测试;
4、相比查询条件的变化,查询结果列的变化更影响效率,因为需要手动关闭缓存remapResults
<select id="verificationCode_select" parameterClass="String" resultClass="HashMap" remapResults="true">$sql$</select>
综上所述,不管行不行,先把代码和SQL写出来测试再说吧!