源码中常见的 where 1=1 是一种高级优化技巧?

你是否曾在 SELECT 查询中看到过 WHERE 1=1 条件。我在许多不同的查询和许多 SQL 引擎中都有看过。这条件显然意味着 WHERE TRUE,所以它只是返回与没有 WHERE 子句时相同的查询结果。此外,由于查询优化器几乎肯定会删除它,因此对查询执行时间没有影响。那么,WHERE 1=1 的作用是什么?这就是我们今天要在这里回答的问题!

# WHERE 1=1 会改善查询执行吗?

正如前文中所述,我们预计查询优化器会删除硬编码的 WHERE 1=1 子句,因此我们不应看到查询执行时间减少。为了证实这个假设,让我们在 Navicat 中运行一个有和一个无 WHERE 1=1 子句的 SELECT 查询。

首先,以下是在 Sakila 示例数据库运行的查询,获取从 Lethbridge 商店租借电影的客户:

c4f702909920ceeaac9af81de5f82dce.png

在信息选项卡的底部可以看到 0.004 秒的运行时间(用红色方框突出显示)。

现在,让我们运行相同的查询,但添加了 WHERE 1=1 子句:

d6d1a2bdf6fbc4fb4758a1eef641795a.png

同样,运行时间为 0.004 秒。尽管查询的运行时间可能因许多因素会略有波动,但可以肯定地说 WHERE 1=1 子句对其没有任何影响。

那么,为什么要使用它呢?简单来说,就是...

👇点击领取👇

👉赠送ChatGPT账号

# 为方便而设

事实上,WHERE 1=1 子句只是一些开发人员采用的一种惯性做法,以简化静态和动态形式的 SQL 语句的使用。

# 在静态 SQL 中

向已经具有 WHERE 1=1 的查询添加条件时,此后的所有条件都将包含 AND,因此在注释掉试验查询的条件时更容易。

8d8009ce1559255f8da4a8d6dfc58810.png

这类似于另一种在列名之前而不是之后加入逗号的技巧。同样,更容易注释:

fa0c9bc6f62a6f909fc476380fa06c2f.png

# 在动态 SQL 中

这也是以编程方式构建 SQL 查询时的常见做法。从“WHERE 1=1”开始,然后附加其他条件,例如“ and customer.id=:custId”,具体取决于是否提供了客户 ID。这允许开发人员在查询中附加以“and ...”开头的下一个条件。这是一个假设的例子:

stmt  = "SELECT * "
stmt += "FROM TABLE "
stmt += "WHERE 1=1 "
if user chooses option a then stmt += "and A is not null "
if user chooses option b then stmt += "and B is not null "
if user chooses option b then stmt += "and C is not null "
if user chooses option b then stmt += "

# 总结

在这篇文章中,我们了解到“WHERE 1=1 的目的是什么?”这个古老问题的答案。它不是一种高级优化技巧,而是一些开发人员所主张的一种风格惯例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/12527.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

启动您的 MySQL 查询:ChatGPT 如何帮助您检索 MySQL 数据

本文涉及到的相关软件,dbForge Studio for MySQL和ChatGPT,在您尝操作前,请务必先确保两个程序都正常运作哦,废话不多说,开始上干货! Devart 提供包括Oracle、SQL Server、MySQL、PostgreSQL、InterBase以及Firebird在…

ChatGPT与深度学习的完美融合:打造智能化推荐系统新时代

PNN | AutoRec | 推荐算法 NFM | ChatGPT | 深度学习 新技术如ChatGPT、LLM、AIGC等的兴起,使推荐系统拥有更强的学习和预测能力。然而,推荐算法仍然是深度学习推荐系统中不可或缺的关键技术。推荐算法和这些技术应相辅相成,相互补充。推荐…

为什么有些 985 的本科学生即使在大学里混得很水,在找工作时学历却那么管用?...

大家好,我是老赵 最近网上有个话题比较有争议:「为什么有些 985、211 的本科学生即使在大学里混得很水,在找工作时学历却那么管用?」考上了重点大学,就真的能够高枕无忧了吗?让我们一起来了解一下吧。 我做…

如何使用租用的云服务器实现神经网络训练过程(超详细教程,新手小白适用)

超级感谢up主7_xun的B站教学视频:适合深度学习小白的CV实战——在AutoDL上租用云服务器跑YOLOv5的全过程 链接:https://www.bilibili.com/video/BV1jA4y1o7Ph/?spm_id_from333.1007.top_right_bar_window_history.content.click&vd_sourcee482aea0f…

FBEC大会 | 全球元宇宙CEO峰会演讲干货汇总

2023年2月24日,由广东省游戏产业协会、深圳市互联网文化市场协会指导,陀螺科技主办的FBEC未来商业生态链接大会,在深圳福田大中华喜来登酒店6楼宴会厅盛大召开! FBEC大会以“勇毅前行逐光而上”为主题,以具有行业前瞻洞…

GPT-4老板称害怕ChatGPT/ 李彦宏:文心一言符合预期/ 马斯克欠账不还…今日更多新鲜事在此...

日报君 发自 凹非寺量子位 | 公众号 QbitAI 大家好,今天是3月20日星期一,又是元气满满的一周。 经历了上一周GPT-4带来的疯狂,科技圈又发生了哪些新鲜事,一起来和日报君看看~ 李彦宏回应外界对文心一言反馈 这两天&…

芯片架构标准首次由中国企业牵头/ 周鸿祎建议大学生做AI训练师/ 港科大不禁ChatGPT…今日更多新鲜事在此...

日报君 发自 凹非寺量子位 | 公众号 QbitAI 工作日最后一天,明天就能尽情嗨皮了~ 今天科技圈都有哪些大事,一起来和日报君康康吧。 周鸿祎称大学生可做人工智能训练师 训练AI,在数据知识标注方面还有所欠缺? 周鸿祎直接…

ChatGPT吸走谷歌人才,谷歌云CEO:AI新游戏刚开场,莫慌

鱼羊 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT搜索被微软抢先一步,内部AI人才又被OpenAI频繁挖角。 最近的谷歌,着实有些内忧外患。 最新曝出的信息是,谷歌的高管们,正在努力安抚员工们不安的情绪。 据Insider消息,…

寻找中国版ChatGPT,量子位邀你共同参与中国AIGC产业峰会

组委会 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT一声枪响,AIGC直接起飞,晋升科技圈最热话题。 问题和争论随之而来: 谁能做出中国版ChatGPT? AIGC是概念炒作,还是真正的「互联网诞生时刻」? …… 机遇与…

总价61亿,“ChatGPT之父”即将收获一个核能公司IPO|钛媒体焦点

OpenAI CEO奥特曼(Sam Altman) ▎“20世纪是碳基能源的世纪。我相信22世纪将是原子能(核能)的世纪”,OpenAI CEO奥特曼表示。 作者|林志佳 编辑|李小年 本文首发于钛媒体APP “ChatGPT之父”、O…

ChatGPT之父:OpenAI不会很快上市 因为会限制我的决策权

雷递网 乐天 6月7日 随着ChatGPT的走红,人工智能企业OpenAI及ChatGPT之父、CEO Sam Altman也炙手可热,公司何时上市,也成为外界关注点。 据外媒披露,Sam Altman参加一场活动时表示,OpenAI不会很快走向资本市场&#xf…

ChatGPT之父提新版摩尔定律!宇宙智能数量每18个月翻一番

来源:新智元 本文约2200字,建议阅读5分钟ChatGPT之父Sam Altman提出了新版摩尔定律,即宇宙中的智能数量每18个月翻一番。 [ 导读 ] 一直以来,半导体行业有自己的摩尔定律。近期,ChatGPT之父Sam Altman提出了新版摩尔定…

【思考】ChatGPT之父:被误解的力量 The Strength of Being Misunderstood

The Strength of Being Misunderstood 被误解的力量 A founder recently asked me how to stop caring what other people think. I didn’t have an answer, and after reflecting on it more, I think its the wrong question. 一位创始人最近问我如何停止关心别人的想法。我…

“ChatGPT之父”呼吁监管ChatGPT

当地时间5月16日,美国国会参议院举行一场名为“AI监管:人工智能的规则”的听证会。有“ChatGPT之父”之称的美国人工智能技术公司OpenAI首席执行官山姆阿尔特曼首次出席美国国会听证会。 出乎一些美国议员的意料,阿尔特曼呼吁立法者监管ChatG…

Face-recognition实现人脸识别

文章目录 1.前置知识点(1)Opencv中矩形,绘制文本(2)Opencv中基础的知识点(3)face_recognition.face_locations(img1ToRGB)(4)face_recognition.face_encodings(img1ToRGB…

人脸检测之CenterFace

论文:CenterFace: Joint Face Detection and Alignment Using Face as Point Github:https://github.com/Star-Clouds/CenterFace 论文基于centerNet进行改进,提出了anchor free形式的人脸检测框架,可以同时实现人脸检测关键点检…

chatgpt赋能python:Python人脸识别:从入门到工程实践

Python人脸识别:从入门到工程实践 介绍 近年来,人脸识别技术越来越成熟,广泛应用于各行各业,如社交媒体、安防、金融等领域。Python人脸识别作为一种基于机器学习的技术,可以通过训练模型从图像中自动识别出人脸,并进…

chatgpt赋能python:Python人脸身份识别:提高安全性和效率的先进技术

Python人脸身份识别:提高安全性和效率的先进技术 随着科技的发展,人类对于安全性和效率的需求逐渐增加。而人脸身份识别技术正是一个能够满足这一需求的先进技术。在过去的几年中,这种技术已经逐渐发展成为一种普及的安全措施,这…

人脸识别之特征脸方法(Eigenface)

人脸识别之特征脸方法(Eigenface) zouxy09qq.com http://blog.csdn.net/zouxy09 因为需要,花了一点时间写了下经典的基于特征脸(EigenFace)的人脸识别方法的Matlab代码。这里仅把该代码分享出来。其实,在…

face_recognition 人脸识别

前言 之前实践了下face在线人脸识别版本,这回做一下离线版本。github 上面有关于face_recognition的相关资料,本人只是做个搬运工,对其中的一些内容进行搬运,对其中一些例子进行实现。 官方描述: face_recognition …