MyBatis <where>标签替换WHERE 1 = 1会提升性能吗
查看项目早期数据库查询语句时,发现很多地方写了WHERE 1 = 1
,怀疑这里有性能损失,想替换成<where>
标签。
验证
已知索引
CREATE INDEX BP_LOG_BP_DATE_IDX ON QXX.BP_LOG (BP_DATE);
分别explain plan
explain plan FOR SELECT * FROM BP_LOG WHERE 1 = 1 AND BP_DATE BETWEEN TO_DATE('2024-06-01', 'yyyy-mm-dd') AND TO_DATE('2024-06-02', 'yyyy-mm-dd');
select * from table(dbms_xplan.display());explain plan FOR SELECT * FROM BP_LOG WHERE BP_DATE BETWEEN TO_DATE('2024-06-01', 'yyyy-mm-dd') AND TO_DATE('2024-06-02', 'yyyy-mm-dd');
select * from table(dbms_xplan.display());
两种方式查询都走索引,速度无明显差异
总结
近期版本的Oracle,WHERE 1 = 1
不会降低查询效率(上古版本未知)。所以如果为了提升效率去替换成标签没什么作用,如果是为了风格统一,那就换吧。