当前位置: 首页 > wzjs >正文

辽宁省建设工程信息网推荐中项网潍坊seo关键词排名

辽宁省建设工程信息网推荐中项网,潍坊seo关键词排名,淘宝客不建网站怎样做,股份有限公司文章目录 where 11问题描述错误实现正确实现性能对比测试 where 11 问题描述 在动态 SQL 拼接场景中,开发者常使用 WHERE 11 简化条件拼接逻辑(避免处理首个条件的 AND)。理论上,数据库优化器会忽略 11,但字符串拼接…

文章目录

  • where 1=1
    • 问题描述
    • 错误实现
    • 正确实现
    • 性能对比测试

where 1=1

问题描述

在动态 SQL 拼接场景中,开发者常使用 WHERE 1=1 简化条件拼接逻辑(避免处理首个条件的 AND)。理论上,数据库优化器会忽略 1=1,但字符串拼接可能带来性能损耗,部分数据库优化器可能无法完全优化 1=1,导致索引失效或全表扫描。建议使用<where> 标签替代 WHERE 1=1 。

错误实现

select *
from job_info
where 1=1
<if test="jobName != null and jobName != '' "><bind name="jobNameBind" value="'%' + jobName + '%'"/>and job_name like #{jobNameBind}
</if>

正确实现

select *
from job_info
<where>
<if test="jobName != null and jobName != '' "><bind name="jobNameBind" value="'%' + jobName + '%'"/>job_name like #{jobNameBind}
</if>
</where>

性能对比测试

  • 数据库:mysql-8.0.29

  • EXPLAIN测试对比:

EXPLAIN SELECT * FROM koca_order WHERE 1=1 AND order_id > 1012EXPLAIN SELECT * FROM koca_order WHERE order_id > 1012
idselect_typetypepossible_keysrowsfilteredExtra
1SIMPLEALLPRIMARY60033.33Using where
  • JMH测试:
@BenchmarkMode(Mode.Throughput)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@State(Scope.Benchmark)
@Fork(3)
@Warmup(iterations = 5, time = 2)
@Measurement(iterations = 5, time = 5)
@Threads(16)
public class WhereConditionBenchmark {private List<String> conditions;@Setuppublic void setup() {// 模拟 5 个动态查询条件conditions = Arrays.asList("age > 18", "status = 1", "name LIKE 'John%'", "city = 'NY'", "score >= 60");}/*** 原始实现:使用 WHERE 1=1 简化拼接*/@Benchmarkpublic void withDummyCondition(Blackhole bh) {StringBuilder sql = new StringBuilder("SELECT * FROM users WHERE 1=1");for (String cond : conditions) {sql.append(" AND ").append(cond);}bh.consume(sql.toString()); // 避免 JIT 优化}/*** 优化实现:直接拼接 WHERE 条件*/@Benchmarkpublic void withoutDummyCondition(Blackhole bh) {StringBuilder sql = new StringBuilder("SELECT * FROM users");boolean first = true;for (String cond : conditions) {if (first) {sql.append(" WHERE ");first = false;} else {sql.append(" AND ");}sql.append(cond);}bh.consume(sql.toString());}}

测试结果:

Benchmark                                          Mode  Cnt      Score      Error   Units
TT.WhereConditionBenchmark.withDummyCondition     thrpt   15  16509.986 ± 3028.386  ops/ms
TT.WhereConditionBenchmark.withoutDummyCondition  thrpt   15  20124.583 ±  420.773  ops/ms

测试结论:

移除冗余的 WHERE 1=1 后,吞吐量提升约 21.9%,说明 1=1 对动态 SQL 生成性能有明显影响。

http://www.dtcms.com/wzjs/467073.html

相关文章:

  • 电子商务网站的建设和维护网站页面分析作业
  • 白石龙做网站查数据的网站有哪些
  • wordpress怎么弄表单湖南有实力seo优化
  • 高端网站建设套餐百度指数怎么下载
  • 淄博做网站建设智能网站推广优化
  • 网站建设算不算固定资产网络营销的推广方式
  • 网站建设用什么软件杭州营销策划公司排名
  • 网站调用网页怎么做电商网站对比表格
  • 进入公众号信阳云seo交流博客
  • 科技型中小企业服务网郑州seo阿伟
  • 泰州哪家做网站建设比较好如何制作微信小程序店铺
  • 杭州互联网网站定制公司腾讯控股第三季度营收1401亿
  • 企业3合1网站建设电话营销渠道有哪几种
  • 昆山建设监察大队网站网站建设报价单
  • 360搜索网站提交百度上做推广怎么收费
  • 新疆建设网查询中心seo排名的方法
  • 做网站的一些话术怎样在浏览器上找网站
  • 易语言可以做api网站对接吗seo快速排名外包
  • 免费搭建seo营销网站
  • 做网站后台程序是怎么来的seo推广优化官网
  • 比较好的做网站的公司seo实战指导
  • 上海建设网站的网站老哥们给个关键词
  • 党建网站怎么做网站建设公司seo关键词
  • 求免费网站能看的2021推广资源网
  • 21天网站建设实录网站搜什么关键词好
  • 做城市分类信息网站好做吗杭州网络排名优化
  • 苏州网站制作哪家好软文网站平台
  • 网站建设流程资料河南郑州最新事件
  • 越秀低价网站建设网站推广优化
  • c 怎么做网站公司seo是指什么意思