当前位置: 首页 > news >正文

select 与 where、group by、order by、limit 子句执行优先级比较

当 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定义的别名

http://www.lryc.cn/news/4542.html

相关文章:

  • 【Docker】用开源umami监控你的站点访问量
  • java环境配置
  • Linux系统服务:Apache安装及配置应用
  • 动态规划(Dynamic Programming)——背包问题
  • JVM学习02:内存结构
  • 6年软件测试经验,从我自己的角度理解自动化测试
  • 三种方式查看linux终端terminal是否可以访问外网ping,curl,wget
  • 【Call for papers】SIGCOMM-2023(CCF-A/计算机网络/2023年2月15日截稿)
  • Chapter5:机器人感知
  • [acwing周赛复盘] 第 90 场周赛20230211 补
  • 数组
  • MicroBlaze系列教程(4):AXI_UARTLITE的使用
  • GO 中的 init 函数
  • 使用C#编写k8s CRD Controller
  • Ansible---playbook剧本
  • Delphi 中TImageCollection和TVirtualImageList 控件实现high-DPI
  • Ros中如何给UR5配置自定义工具 | 在Rviz中给UR5机器人装载定义工具 | UR5配置自定义末端执行器
  • 数据库 delete 表数据后,磁盘空间为什么还是被一直占用?
  • docker-微服务篇
  • 图像优化篇
  • 在surface go 2上安装ubuntu 20.04
  • Java:SpringMVC的使用(1)
  • 自动化测试岗位求职简历编写规范+注意事项,让你的简历脱颖而出
  • C 字符串
  • 【每日一题Day115】LC2335装满杯子需要的最短总时长 | 贪心
  • Flink流计算处理-旁路输出
  • nginx正向代理的配置和使用
  • Oracle Trace File Analyzer 介绍及简单使用
  • 面试实战篇 | 快手本地生活,结合项目谈Redis实战项目场景?MySQL InnoDB存储引擎如何工作的?策略模式?
  • Hadoop之——WordCount案例与执行本地jar包