问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql语句的问题,请问这个程序是怎么执行的。sql的执行顺序中where在select之前,那么

发布网友 发布时间:2022-04-11 04:12

我来回答

2个回答

懂视网 时间:2022-04-11 08:33

于是我研究了一下,发现在SQL语句的执行顺序中,SELECT并不是最先执行的,而是在第五个。

技术图片

上面这张图与SQL查询语句的语义有关,能让你知道一个查询会返回什么,并回答了以下这些问题:

1.可以在GROUP BY之后使用WHERE吗?(不行,WHERE是在GROUP BY之前!)

2.可以对窗口函数返回的结果进行过滤吗?(不行,窗口函数是SELECT语句里,而SELECT是在WHERE和GROUP BY之后)

3.可以基于GROUP BY里的东西进行ORDER BY吗?(可以,ORDER BY基本上是在最后执行的,所以可以基于任何东西进行 ORDER BY)

4.LIMIT是在什么时候执行?(在最后!)

但数据库引擎并不一定严格按照这个顺序执行SQL查询,因为它们为了更快地执行查询,会对执行顺序做出一些优化。也就是说,当涉及查询性能或者与索引有关的东西时,这张图就不适用了。

混合因素:列别名

有很多SQL实现允许你使用这样的语法:

SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name, count(*)
FROM table
GROUP BY full_name

从这个语句来看,好像GROUP BY是在SELECT之后执行的,因为它引用了SELECT中的一个别名。但实际上不一定要这样,数据库引擎可以把查询重写成这样:

SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name, count(*)
FROM table
GROUP BY CONCAT(first_name, ‘ ‘, last_name)

这样GROUP BY仍然先执行,另外数据库引擎还会做一系列检查,确保SELECT和GROUP BY中的东西是有效的,所以会在生成执行计划之前对查询做一次整体检查。

数据库可能不按顺序执行查询(优化)

在实际当中,数据库不一定会按照JOIN、WHERE、GROUP BY的顺序来执行查询,因为它们会进行一系列优化,把执行顺序打乱,从而让查询执行得更快,只要不改变查询结果。

下面这个查询说明了为什么需要以不同的顺序执行查询:

SELECT *
FROM owners 
 LEFT JOIN cats
 ON owners.id = cats.owner
WHERE cats.name = ‘tommy‘

如果只需要找出名字叫tommy的猫,那就没必要对两张表的所有数据执行左连接,而是应该在连接之前先进行过滤,这样查询会快得多。而且对于这个查询来说,先执行过滤并不会改变查询结果。因此在这里数据库引擎会根据执行效率最优对执行顺序进行优化,生成相对应的执行计划方案。

 

"不要眼眶一红,就觉得人间不值得。"

sql查询语句并不是最先执行SELECT

标签:src   rom   关键字   span   tom   ast   而且   执行sql   解释   

热心网友 时间:2022-04-11 05:41

在执行where时,出现的字段或别名,会试图在select 后的列表中查询(如果是*,则会查询所有字段)查询不代表开始执行select了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
乾隆小时候的书童是谁 下面对句式判断有误的一项是( ) A.当立者乃公子扶苏(判断句) ...为折线,把 折起,使平面 平面 ,连接 (1)求证: ;(2)求二面角 图中由线段OA、AB组成的折线表示的是小明步行所走的路程和时间之间的关... 动态图像粒度粒形分析仪 oppor9splus视频通话怎么开美颜 微信视频聊天怎么开美颜oppor9 谁家出售二手胶囊填充机NJP1200 NJP-1200A硬胶囊填充机仪器特点简介 NJP-1200A硬胶囊填充机仪器参数 眼什么四字成语 关于房地产营销策划方面的书都有什么? 大清银币宣统三年的能值多少钱啊?曲须龙的 请推荐几本房地产策划的书籍 一枚大清银币,宣统三年的,值多少钱 1995年属猪的人2015年运程怎么样?1995年出生属猪的人2015年事业、财运、健康、感情运势如何? 那和哪的区别用法?如题 谢谢了 95年属猪的2014运势 翡翠玻璃种和冰种的区别 1995年屑猪的运势方位 中国在国际上的现状 关于中国的现状 中国社会的现状怎样? 论中国之现状。 中国社会的现状? 如何评价中国的现状 中国当今的现状如何??? 图集上有明确标注吗? 怎样识别电线大小电线身上有什么标注吗? 鲁迅的小说以前就有标注吗 梦到捡到小女孩的鞋子是什么寓意? word中如何让背景图完全置于文字下面 眼开头的四字词语 word绘图工具 置于底层在哪 请教:word里打印一篇文章,想用一幅图片打底要怎么搞啊,??急!!!! 眼睛有什么四字词语 眼字开头四字成语 含“眼”字的四字词语 眼的成语组词,第三个字是眼字的四字词语 眼什么大略四字词语? 名片用什么纸好240克荷兰白卡? 怎么区分冰种,玻璃种的翡翠 护照破损如何重新办理 卡片一般是什么纸张 护照损坏了可以更换吗 翡翠的玻璃种和冰种哪个更好些?如何判断? 护照有一页破损怎么办 全自动洗地机可以清洗打蜡木地板吗 硬盘解锁问题 HDD Unlock Wizard 清除硬盘密码后,清除的数据是否可以恢复?