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

网站功能详细设计外贸网站建设智能建站

网站功能详细设计,外贸网站建设智能建站,网页设计一般要多少钱,数字媒体应用 网站开发文章目录 前言聊聊 mybatis 中多条件拼接的两种常规写法where 11使用 <where> 标签 性能影响where 11<where> 标签 总结个人简介 前言 最近在项目中使用 mybatis 写 SQL 使用了 where 11 来简化多条件拼接的写法&#xff0c;案例如下&#xff0c;借此聊聊多条件拼…

文章目录

  • 前言
  • 聊聊 `mybatis` 中多条件拼接的两种常规写法
    • `where 1=1`
    • 使用 `<where>` 标签
  • 性能影响
    • `where 1=1`
    • `<where>` 标签
  • 总结
  • 个人简介

前言

  • 最近在项目中使用 mybatis 写 SQL 使用了 where 1=1 来简化多条件拼接的写法,案例如下,借此聊聊多条件拼接的常见的一些写法以及 where 1=1 是否存在性能影响。
<select id="" parameterType = "">SELECT * FROM users WHERE 1=1<if test="userName != null ">AND user_name = #{userName}</if><if test="userAge != null ">AND user_age = #{userAge }</if><if test="userSex!= null ">AND	user_sex = #{userSex}</if>
</select>

聊聊 mybatis 中多条件拼接的两种常规写法

where 1=1

  • 如前言中的示例:
<select id="" parameterType = "">SELECT * FROM users WHERE 1=1<if test="userName != null ">AND user_name = #{userName}</if><if test="userAge != null ">AND user_age = #{userAge }</if><if test="userSex!= null ">AND	user_sex = #{userSex}</if>
</select>

使用 <where> 标签

  • mybatis 提供 <where> 标签,<where> 标签只有在一个以上的if条件有值的情况下才去插入WHERE子句。若AND 或 OR 前没有有效语句,where 元素会将它们去除。
<select id="" parameterType = "">SELECT * FROM users <where><if test="userName != null ">AND user_name = #{userName}</if><if test="userAge != null ">AND user_age = #{userAge }</if><if test="userSex!= null ">AND	user_sex = #{userSex}</if></where>
</select>

性能影响

  • where 1=1<where> 标签两种写法前者性能损耗在 SQL查询性能优化,后者在于 SQL 语句动态生成 。下面我们来具体分析一下:
  • MySQL 版本:
SELECT VERSION();5.7.44# 数据构造 SQL
CREATE TABLE IF NOT EXISTS t_user
(id INT not null auto_increment primary key comment '自增ID',name varchar(20) comment '姓名',age tinyint  comment '年龄'
)ENGINE = INNODB;INSERT INTO t_user ( NAME, age ) VALUES ( '张三', 18 ),( '李四', 19 ),( '王五', 20 ),( '司总', 21 );

where 1=1

  • 在 5.7 以上版本中,SQL查询性能优化 会将 1=1 部分优化掉,并不会影响索引,但网上有部分资料说在低版本中有一定影响,所以需要稍微留意一下。
# 注:需要选中一起执行可以查看到优化后的 SQL
explain select * from t_user where 1=1 AND name = '张三';
show warnings;# 优化后的 SQL
/* select#1 */ SELECT
`mydatabase`.`t_user`.`id` AS `id`,
`mydatabase`.`t_user`.`name` AS `name`,
`mydatabase`.`t_user`.`age` AS `age` 
FROM`mydatabase`.`t_user` 
WHERE(`mydatabase`.`t_user`.`name` = '张三')
  • 从优化后的 SQL 可以看到, 1=1 部分已经被查询优化器优化掉,所有对整体的性能影响并不大。
# 性能对比
select * from t_user where 1=1 AND name = '张三'
> OK
> 查询时间: 0.046sselect * from t_user where 1=1
> OK
> 查询时间: 0.046s

<where> 标签

  • 相比于 where 1=1 在 MySQL 中服务器层由查询优化器进行处理,<where> 标签在动态构建 SQL 中处理,但性能也无很大影响,因为本质并不是很复杂的动态 SQL 生成。

总结

  • where 1=1<where> 标签是多条件拼接的两种常见写法,性能层面而言并没有较大的影响,具体选择何种写法可以根据团队的规范决定。
  • 此外两种方案的处理与处理的数据量无关,一次执行都仅处理一次,所以在大数据量下也无性能差异。

个人简介

👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

📖 保持关注我的博客,让我们共同追求技术卓越。

http://www.yayakq.cn/news/495602/

相关文章:

  • 东阳光门户平台提升seo排名
  • 临沂住房和城乡建设厅网站wordpress 分类文章置顶
  • 软文网站推广法国际机票搜索量大涨
  • 阜南做网站公司网络营销流程
  • 做软件营销网站怎么样定制设计网站公司
  • 男女生做羞羞网站查看公司信息的网站
  • 如何做凡客网站电影网站开发文档
  • 深圳找工作的网站 上软件下载app
  • 诸城网站建设茂名seo网站建设
  • 手机做任务网站天津 公司网站建设
  • 买房网站排名为什么要用h5建站
  • 青岛推广软件南阳网站排名优化
  • 网站建设如何提高浏览量网站项目需求表
  • 一屏网站模板下载 迅雷下载 迅雷下载地址百度怎么搜索到自己的网站
  • 广东省住房和城乡建设网站wordpress轮播图代码
  • 八年级学生做的简易网站网络安全培训机构排名
  • 昆明网站建设公司哪家好域名备案不是网站公司做的
  • 广州微网站建设效果域名申请哪家好
  • 网站建设支出及维护费应怎样做账公司网站建设需要提供什么材料
  • 无锡赛孚建设工程有限公司网站国内较好的网站开发商城
  • 毕业设计做网站用什么微博wordpress
  • 企业网站网页设计图片的应用
  • 想花钱做网站怎么做如何建设教师网上授课网站
  • 东莞seo网站优化排名网上找家装设计师
  • wordpress修改网站名称php 网站部署到服务器
  • vue网站开发教程贵阳观山湖区网站建设
  • 玉溪市城乡建设局网站邢台168交友
  • 网站开发大概要多少钱东莞建筑公司招聘信息
  • 本地镇江网站建设郑州 互联网 公司网站
  • 帮你省网站怎么做网站建设方案和报价