select 与 where、group by、order by、limit 子句执行优先级比较
创始人
2024-05-25 16:51:24
0

当 select 和 其他三种语句的一者或者多者同时出现时,他们之间是存在执行先后顺序的。

他们的优先级顺序是:where > group by > select > order by > limit


         目录

1、select 与 where 

2、group by 与 where 、select

2、select 与 order by

3、order by 与 limit

4、优先级证明


1、select 与 where 

select是展示查询结果,where是条件筛选。这里存在两种情况:

  • select先,where后:先查询到所有的记录,然后再按条件筛选出符合条件的,
  • where先,select后:筛掉不符合条件的,然后再展示符合条件的

很显然,后者是效率比较高的,站在C语言的逻辑就是,for循环遍历所有的记录,每遍历一条记录就判断该记录是否符合条件,不符合就舍弃;符合条件就加入到数组。

因此,where > select

 

2、group by 与 where 、select

where 是整表记录的筛选,group by是根据某一个字段的内容进行分组。

先进行整表筛选可以减少要分组的记录,然后group by 在筛选完的基础上进行分组,最后select在每一个分组中做查询操作。

因此,where > group by > select

2、select 与 order by

select是展示查询结果,order by 是排序,这里同样也分为两种情况:

  • select先,order by后:先查询到所有的记录,然后排序
  • order by先,select后:每遍历到一条记录,就对其进行排序,这样很显然,效率不高,说不定要重复遍历之前的记录

因此,前者的效率高一点,即 select > order by

3、order by 与 limit

order by 是排序,limit是截取,这里已经无需比较了,很显然是先排序,然后再截取,因为先选出几行,然后再排序没有意义。

因此,order by > limit

4、优先级证明

从上述介绍可以得出优先级顺序:where > select > order by > limit

我们可以在select语句中,为某个字段起一个别名,按照上述优先级,where子句中是无法使用该别名的,但是 order by 和 limit 子句可以使用该别名。

where中无法使用 select 定义的别名

 但是order by中可以使用select定义的别名

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...