Mybatis的mapper文件, 不要where 1=1,影响性能,改用<where>标签

传统写法,不确定传入参数而写上1=1,确保sql一定正常执行.(where 1=1 非常影响性能)


推荐写法,Mybatis里底层已做优化处理.(where标签来解决)
备注:where元素知道只有在一个以上的if条件有值的情况下才去插入“where”子句。
而且,若最后的内容是“AND”或“OR”开头的,where 元素也能识别并将它们去除。


附:where 1=1 对性能的影响
很多时候,使用where 1=1 可以很方便的解决遇到的问题,但很可能会造成巨大的性能损失,
因为使用了 “where 1=1 ”的过滤条件后,就无法使用索引等查询优化策略,
db将被迫对每行数据进行扫描(即全表扫描) 以比较此行是否满足过滤条件,
若表中的数据量较大时候查询速度会非常慢。
因而高手玩家,或者对性能有比较高的要求就不要使用这种传统的方式了。

你可能感兴趣的:(Mybatis的mapper文件, 不要where 1=1,影响性能,改用<where>标签)