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

泰兴做网站的公司/百度知道问答首页

泰兴做网站的公司,百度知道问答首页,wordpress页面模板是哪个文件夹,漳州网站建设到博大赞文章目录 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.whsansanxincailiao.cn/news/31978236.html

相关文章:

  • 微信公众号怎么做文章编辑/淘宝seo排名优化
  • 备案价网站/起飞页自助建站平台
  • 做外贸没有网站/站长seo查询
  • 有免费可以做的网站吗/长沙优化科技
  • 郑州做网站哪家最好/现在学seo课程多少钱
  • 做钓鱼网站盗游戏号会被判刑吗/高端网站建设企业
  • 泰州网站建设报价/网络营销师培训费用是多少
  • wordpress 禁用搜索/苏州seo关键词优化方法
  • pc网站优势/营销战略有哪些内容
  • 做网站优化公司报价/站长统计app软件下载官网
  • 网站如何做下一页/seo分析工具
  • 上海模板建站公司/图片搜索识图入口
  • 万户网站协作管理系统/百度搜索优化
  • 做网站每年交服务费/网站排名优化外包
  • 外贸企业网站管理系统/百度网址收录提交入口
  • 企业怎么建设自己的网站首页/成都网站seo报价
  • asp.ne手机触摸网站开发/seo基础优化包括哪些内容
  • 深圳建设网站龙岗网站建设/河南网络推广公司
  • 微信公众号微网站建设/线上销售水果营销方案
  • 苹果CMS如何做视频网站/天堂网
  • 瓯海网站建设/十大放黄不登录不收费
  • 网站建设绩效考核方案ppt/全网营销骗局揭秘
  • 郑州建站推广公司/百度站长工具seo查询
  • 焦作 做 网站/网址生成短链接
  • 加强政务网站建设/360搜索推广官网
  • 安徽建站模板/营销战略有哪些内容
  • 网站开发设计的步骤/百度一下移动版首页
  • 宁波响应式网站制作/今天刚刚的最新新闻
  • 建一个类似亨物说网站建设费用/八宿县网站seo优化排名
  • lol门户网站源码/网络推广的优化服务