当前位置:网站首页>The new colleague asked me what "where 1=1" means???
The new colleague asked me what "where 1=1" means???
2022-06-12 19:51:00 【Java collection】
When the new colleague came, he asked me where 1=1 What's interesting , It doesn't make sense , I smiled. . Today, let's explain .
where 1=1
Let's start with a piece of code
<select id="queryBookInfo" parameterType="com.ths.platform.entity.BookInfo" resultType="java.lang.Integer">
select count(id) from t_book t where 1=1
<if test="title !=null and title !='' ">
AND title = #{title}
</if>
<if test="author !=null and author !='' ">
AND author = #{author}
</if>
</select>The above code is familiar , This is the total number of qualified queries . stay mybatis Used in if Tag judgment where Condition after clause , In order to prevent the first field from being empty, resulting in sql Report errors . you 're right , When multiple query conditions are encountered , Use where 1=1 It can easily solve the problem that our condition is empty , So that's how it's written Is there anything wrong with that? ?
Many people on the Internet say , This can cause performance problems , May invalidate the index , So let's measure it today , Will you not go . in addition , More similar interview questions , official account Java selected , reply java interview , Access to interview information , Support online question brushing anytime, anywhere .
Actually measured
title The field has been indexed , We go through EXPLAIN look down :
EXPLAIN SELECT * FROM t_book WHERE title = ' And on earth ';EXPLAIN SELECT * FROM t_book WHERE 1=1 AND title = ' And on earth ';Comparing the above two, we will find You can see possible_keys( Possible indexes ) and key( Actual index used ) All use the index for Retrieval .
Conclusion
where 1=1 I'll go with the index , Does not affect query efficiency , We wrote sql Orders will be mysql Analyze and optimize into your own processing instructions , In the process 1 = 1 Such meaningless conditions will be optimized . Use explain EXTENDED sql Proofread , Find out where1=1 Such conditions will be mysql Optimized by the optimizer .
So we're in mybatis You can change the writing , Because after all mysql The optimizer also takes time , Although it's gone , But when the amount of data is large , It will still have an impact , So we suggest that the code be written like this :
<select id="queryBookInfo" parameterType="com.ths.platform.entity.BookInfo" resultType="java.lang.Integer">
select count(*) from t_book t
<where>
<if test="title !=null and title !='' ">
title = #{title}
</if>
<if test="author !=null and author !='' ">
AND author = #{author}
</if>
</where>
</select>We use it where Label substitution .
author : Su Shi _
https://juejin.cn/post/7030076565673213989
official account “Java selected ” The published content indicates the source of , All rights reserved ( Those whose copyright cannot be verified or whose source is not indicated all come from the Internet , Reprinted , The purpose of reprinting is to convey more information , The copyright belongs to the original author . If there is any infringement , Please contact the , The author will delete the first time !
Many people have asked recently , Is there any readers Communication group ! The way to join is simple , official account Java selected , reply “ Add group ”, You can join the group !
Java Interview questions ( Wechat applet ):3000+ The road test questions , contain Java Basics 、 Concurrent 、JVM、 Threads 、MQ series 、Redis、Spring series 、Elasticsearch、Docker、K8s、Flink、Spark、 Architecture design, etc , Brush questions online at any time !
------ Special recommendation ------
Special recommendation : Focus on the most cutting-edge information and technology sharing , Official account for preparing for overtaking on curves and various open source projects and efficient software ,「 Big coffee notes 」, Focus on finding good things , It's worth your attention . Click the official account card below to follow .
If the article helps , Click to see , Forward! !
边栏推荐
- Implementation of exec function and shell
- 基于微信电子书阅读小程序毕业设计毕设作品(1)开发概要
- asp. Net using JSON to interact with API data
- 模块八作业
- Stm8l51 sx1280 commissioning record
- API call display, detailed API of Taobao, tmall and pinduoduo commodity pages, and return of APP side original data parameters
- Promise to solve hell function calls can be used infinitely
- 从16页PPT里看懂Jack Dorsey的Web5
- What did 3GPP ran do in the first F2F meeting?
- Module 8 operation
猜你喜欢

What is the difference between union and union all

Torch network model is converted to onnx format and visualized
![[observation] Huawei's next generation data center](/img/d8/a367c26b51d9dbaf53bf4fe2a13917.png)
[observation] Huawei's next generation data center "adds momentum" to Guangxi's low-carbon and high-quality development

User and group permissions

Axure RP 9 for MAC (interactive product prototyping tool) Chinese version

Microsoft Word tutorial, how to insert page numbers and table of contents in word?

【生成对抗网络学习 其三】BiGAN论文阅读笔记及其原理理解

Low code enables rural construction to open "smart mode"

Process accounting, process time, daemon

BigTable (II): how BigTable achieves scalability and high performance
随机推荐
5g R17 standard is frozen. What does it say?
Axure RP 9 for MAC (interactive product prototyping tool) Chinese version
What is an index?
Compilation of programs
基于微信电子书阅读小程序毕业设计毕设作品(8)毕业设计论文模板
Mode of most elements (map, sort, random, Boyer Moore voting method)
3D object detection
Test prerequisites: recommend a special cross platform app performance test tool!
Efcore tuning
Overview of object detection
Understand Jack Dorsey's web5 from the ppt on page 16
Hardware test - why not use grounding clip for ripple test
JDBC interface summary
6 R factor and judgment Na
Installation and testing of open source deep learning framework plaidml
Original publishing practice of pipeline in Jenkins docking with CMDB interface to obtain host list
基于微信电子书阅读小程序毕业设计毕设作品(4)开题报告
Programming tool download address
Demand and business model analysis -6- five topics
Dynamic memory management