先说结论,where 1=1不会影响性能,如有错误,请指点一下

trim标记是一个格式化的标记,可以完成set或者是where标记的功能。

2020.1.17,周五,距离春节假期返家仅剩两天,在公司抽空做了下代码代码优化,发现有段mapper代码如下:

    <select id="getList" resultMap="BaseResultMap" parameterType="payment.common.Criteria">select a.* from app a where 1=1<if test="_parameter != null"><include refid="getappListSQL"/></if></select>

其引入的getAPPListSQL如下:

    <!-- app条件 --><sql id="getappListSQL"><trim ><if test="condition.appId != null">and a.id = #{condition.appId}</if><if test="condition.appName != null">and a.appName like '%${condition.appName}%'</if></trim>order by a.id desc<include refid="*****.Mysql_Pagination_Limit"/></sql>

这个方法从逻辑上看起来好像并没有什么问题,但是看到这段代码时我的心情是沉重的,因为我觉得我的前人还给我留了很多坑。在我之前的认知中,这样会导致sql优化时放弃索引,因此产生了巨大的性能影响,所以打算写这篇文章吐槽一下前人。于是我贴了我修改之后的代码来与原代码进行对比,然后又觉得这样不够有说服力,打算用explain对sql执行效率进行分析,然后贴图上来,事情到现在仍很顺利,BUT:

查完之后我人就傻了。。。

所以说,纸上得来终觉浅,绝知此事要躬行!!!

然后我又去网上查了很多资料,有很多人都发现了这个问题,但是都没有给出一个合理的解释,这又勾起了我的好奇心!我想到MYSQL是有一定的优化机制的,如果我是设计者,我一定会将这些类似“1=1”的条件给优化掉,而不是让他来影响我sql的性能,那就来看一下优化后的sql

果然是我想象的那个样子,优化过后的代码根本没有“1=1”这个条件,更不用谈它还能够影响我们的性能了!!!

最起码不是

我们回头再考虑一下为什么大家都在说“1=1”会影响MySQL的性能,可能在很久之前的sql版本中,“1=1”确实会影响到sql语句的索引优化过程,这是一个很严重的问题,所以大家都记得这个事,在后来sql将这个问题给优化掉了,但是很多新人听老人仍在讲这个问题,所以就一直记得,新人变成老人后又给其他新人去说这个问题,慢慢的大家都记得这个问题,但已经没有人去验证他的真假了。

我觉得这就是csdn用户甚至中国当前IT行业从业人员所面临的问题。

先看有没有,再说为什么!!!

MySQL中where 1=1真的会影响性能么?相关推荐

  1. mysql查询时,offset过大影响性能的原因与优化方法

    遇到的问题 我们大家都知道,mysql查询使用select命令,配合limit,offset参数可以读取指定范围的记录,但是offset过大影响查询性能的原因及优化方法,这次工作中因为要导出40W的数 ...

  2. 别被骗了,try-catch语句真的会影响性能吗?

    前言 不知道从何时起,传出了这么一句话:Java中使用try catch 会严重影响性能. 然而,事实真的如此么?我们对try catch 应该畏之如猛虎么? 一.JVM 异常处理逻辑 Java 程序 ...

  3. try - catch 语句真的会影响性能吗?

    不知道从何时起,传出了这么一句话:Java中使用try catch 会严重影响性能.然而,事实真的如此么?我们对try catch 应该畏之如猛虎么? 一.JVM 异常处理逻辑 Java 程序中显式抛 ...

  4. try catch真的会影响性能?居然被骗了好几年...

    一.JVM 异常处理逻辑 Java 程序中显式抛出异常由athrow指令支持,除了通过 throw 主动抛出异常外,JVM规范中还规定了许多运行时异常会在检测到异常状况时自动抛出(效果等同athrow ...

  5. mysql中的索引对查询的影响

    索引可以提高查询速度,但是并不是使用带有索引的查询,索引都会起作用. 1.使用LIKE关键字的查询 如果匹配字符的第一字符使用的%,索引不会起作用,只有第一个字符不是字符 %时,索引才会起作用 2.多 ...

  6. MySQL中聚合函数count的使用和性能优化

    本文将探讨以下问题 1.count(*) . count(n).count(null)与count(fieldName) 2.distinct 与 count 连用 3.group by (多个字段) ...

  7. MySQL中int、char、varchar的性能浅谈

    网络上有许多似是而非的"谣言",当然都不是恶意,绝大部分都是开发者不愿意自己主动研究,反而轻信其他人的信口之言. 关于数据库的谣言也有不少,比如"int性能比char高很 ...

  8. mysql inner和left优化_浅谈mysql中的left join和inner join性能及优化策略

    前言 看一下 下面的sql语句:select * from a left join b on a.x = b.x left join c on c.y = b.y 这样的多个left join组合的时 ...

  9. MySQL中主键的选择与磁盘性能

    偶然看到了"Fotolog: Scaling the World\'s Largest Photo Blogging Community",才发现很多数据库的优化其实道理都很简单, ...

最新文章

  1. TCP/IP基础概念及通信过程举例
  2. JAVA学习笔记(6)
  3. 推荐一个 开源C#股票软件
  4. 云时代看CRM如何引领企业成功?
  5. linux负载很高是什么原因导致的?
  6. vue-cli + lib-flexible + px2rem实现px自动转化为rem
  7. 第一次走绿道,从长岭陂到梅林水库
  8. Android之JNI ERROR (app bug): accessed stale global reference 0xb39533f2 (index 19708 in a table of s
  9. Spring Jpa 返回自定义实体
  10. python求多条最短路径_Python实现最短路径算法(Dijkstra's algorithm)
  11. DQL——数据查询语言
  12. 为什么表数据删掉一半,表文件大小不变?
  13. python字典由键插值_SciPyTutorial-一元插值interp1d
  14. php进销存源码云进销存管理系统
  15. 宝塔同时安装苹果cms海洋cms_苹果cmsV8/海洋cms/飞飞cms转换成苹果cmsv10插件
  16. nginx中配置gzip_static on提示nginx: [emerg] unknown directive “gzip_static“ in
  17. Python爬取6271家死亡公司数据,一眼看尽十年创业公司消亡史!
  18. 康福中国服务器位置,康福中国camfrog服务器管理命令有哪些?
  19. 淘宝小程序(商家应用)开发提前需要了解的一些概念
  20. 【每天读一点英文】叶芝诗歌《当你老了》赏析——特别喜欢的一首诗,水木年华《一生有你》歌词来源

热门文章

  1. MAC 下Sublime text 同时编辑多行内容
  2. 西门子plc视频教程
  3. 服务器中搭建OA系统,云服务器搭建oa系统
  4. ECharts 数据可视化插件
  5. WM_PIANT消息与窗口重画
  6. 【CVPR20超分】Zooming Slow-Mo: Fast and Accurate One-Stage Space-Time Video Super-Resolution
  7. YOLOv5的参数IOU与PR曲线,F1 score
  8. 光模块COB工艺之耦合激光焊
  9. 模式识别算法之2--感知器(感知机)算法
  10. 时尚新享受,告别鼠标手