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

深圳官网建设公司/西安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.whsansanxincailiao.cn/news/32019132.html

相关文章:

  • 临沂手机端建站模板/湖南seo优化哪家好
  • 龙华做棋牌网站建设哪家好/上海短视频seo优化网站
  • 成都创新互联做网站/谷歌手机版下载安装
  • .我爱你 域名网站/站长统计app下载大全
  • 动态网站制作报价/网络营销的特点是什么?
  • 代做网站平台/网络营销费用预算
  • 云主机可以做网站吗/自助建站系统源码
  • 网站的风格分析/2022近期时事热点素材摘抄
  • 做招聘长图用什么网站/目录型搜索引擎有哪些
  • 网站空间什么意思/网店如何推广
  • 进一步加大网站集约化建设力度/广州seo外包公司
  • 微网站建设包括哪些内容/培训班管理系统 免费
  • 大连微网站建设/网络广告营销典型案例
  • 拖拉建网站/免费网站流量统计
  • 品牌网站建设策/长沙官网seo技巧
  • 重庆做网站建设的公司哪家好/关键词点击排名软件
  • 视频网站怎么做算法/seo搜索推广费用多少
  • 营销型网站有哪些出名的/搜狗seo快速排名公司
  • 深圳做步步高的公司网站/海外推广营销 平台
  • 网站做支付需要什么备案/小红书seo排名规则
  • 学校网站报价单/郑州制作网站公司
  • 线上外贸平台有哪些/seo到底是什么
  • 怎么用indesign做网站设计/超级软文
  • 品牌网官网/长沙seo网络优化
  • 深圳好看的公司网站/好搜网
  • 抖音小姐姐做我女朋友网站/seo1视频发布会
  • 电子工程网络维护记录/惠州seo网站排名
  • 将html嵌入wordpress/沈阳专业seo排名优化公司
  • 怎么做网站推/优化服务
  • 做网站用php还是java/优化百度seo