关于sql语句的执行顺序的疑问

如果按照下面这个顺序
一、sql执行顺序
(1)from
(2) on
(3) join
(4) where
(5)group by(开始使用select中的别名,后面的语句中都可以使用)
(6) avg,sum....
(7)having
(8) select
(9) distinct
(10) order by

第一步:首先对from子句中的前两个表执行一个笛卡尔乘积,此时生成虚拟表 vt1(选择相对小的表做基础表)
第二步:接下来便是应用on筛选器,on 中的逻辑表达式将应用到 vt1 中的各个行,筛选出满足on逻辑表达式的行,生成虚拟表 vt2

那比如 select * from A left join B on A.id = B.id where A.id = 10 这条语句,在where中明确指定了id,那mysql也会先执行A表和B表的笛卡尔集吗,那如果A,B两张表数据特别多 岂不是很慢?

0

5个回答

SQL语句的执行顺序考虑的是为了执行结果的正确性,而不是提高效率,提高效率使用存储过程,索引等解决。如果不遵守执行顺序规则连查询的结果都不一定正确,就不用谈效率了

0

SQL语句的执行顺序考虑的是为了执行结果的正确性,,提高效率游标,索引等解决。

0

https://blog.csdn.net/mango_love/article/details/44836829
sql执行顺序请参考这篇文章,
至于内连接是可以用where来筛选的,如果你担心的查询慢的情况那是很正常,因为你这种是一对多的情况,所以你还不如先把那个条件筛选后再去关联查询,这样会快不少,希望可以帮到您

0

你这是伪命题,你可以采用其它的方法啊,如果是你这种场景的话,mysql底层就是这样执行的,要不然要去理解他的原理干嘛
你可以分开查
或者 id=10写到on里面 都比你这快

0

是的,先执行:A left join B on A.id = B.id,后执行 where A.id = 10 ,最后选择 select *

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
slq 语句的选择顺序
本资料是关于sql 语句的的执行顺序分析
SQL语句执行顺序说明
关于SQL语句在进入oracle库缓存之后的执行顺序的简析~!
MYSQL------sql语句完整的执行顺序
sql语句的元素:rn1、from 子句组装来自不同数据源的数据;rn2、where 子句基于指定的条件对记录行进行筛选;rn3、group by 子句将数据划分为多个分组;rn4、使用聚集函数进行计算rn5、使用 having 子句筛选分组;rn6、计算所有的表达式;rn7、select 的字段;rn8、使用 order by 对结果集进行。rn真确的顺序是:rnSELECT select_expr [,selec...
SQL语句的语法顺序和执行顺序
一、语法顺序和执行顺序nn   (1)SQL语句的语法顺序:     nn       SELECT[DISTINCT]nn       FROMnn       JOINnn       ONnn       WHEREnn      GROUP BYnn      HAVINGnn      UNIONnn      ORDER BYnn      LIMITnn   (2)SQL的执行顺序n...
sql语句的执行顺序
理解sql语句的执行顺序对优化sql非常重要,那么sql语句的执行顺序是怎样的呢,以一条简单的的语句做分析:nn         这一条语句包含我们经常用到的一些关键字,select,from,where,group by,order by,它的执行顺序如下:n先执行from关键字后面的语句,明确数据的来源,它是从哪张表取来的。n接着执行where关键字后面的语句,对数据进行筛选。n再接
SQL Select语句完整的执行顺序
SQL Select2008语句完整的执行顺序
sql语句 where 后条件执行顺序
曾经面试时。被问到过这个问题。结合网上的知识,整理如下:针对mysql,其条件执行顺序是 从左往右,自上而下;针对orcale,其条件执行顺序是从右往左,自下而上。...
解析在一个SQL语句中同时出现count()、where、group by 的先后执行顺序
如:select count(*) from tab1 where publi_id='1000000141' and cent_id='3702000001'nnnn它是先根据条件利用where查询出所有数据,然后利用count将每条数据汇总,就是算一下有多少条数据nn如:select count(*) from tab1 where publi_id='1000000141' and cent...
SQL语句嵌套时的执行顺序
1.原语句:SELECT ID,NAME,STATES,(SELECT STATES FROM ITEM  WHERE ID=T.ITEM_ID) AS ITEM_END_FLAGFROM RESULT TWHERE 1=12.ITEM表中实际没有STATES列,但执行时语句却没报错,并且ITEM_END_FLAG列的结果与STATES列结果相同;3.通过SQL SERVER的“原执行计划”工具发...
oracle SQL语句执行顺序
1、fromnn2、wherenn3、group by nn4、havingnn5、selectnn6、order by
MySQL数据库SQL语句执行顺序
MySQL语句执行顺序:FROM > 表链接(inner join、left join、right join) > WHERE >group by 进行分组 > having过滤 > select > order by 语句排序 > 分页语句...
Mysql----SQL查询语句执行顺序
SQL查询语句执行顺序
DBA必备的sql好习惯
关于sql server的逻辑执行顺序,和一些语句的优化,提高查询效率,很不错的一篇文章,分享给大家。
SQL查询语句的执行顺序
SQL查询语句的执行顺序nn昨天写了份去年数据库的期中考试卷,其中有一题选择题要求选出查询语句select–from–where–group by–having–order by的执行顺序,这里做一下总结nn执行顺序nnn查询语句中用到的关键词主要包含六个,它们的书写顺序为select–from–where–group by–having–order by,其中select和from是必须要有的,...
sql关键字的执行顺序
sql语句关键词的执行顺序:from —> on —> outer(join) —> where —> group by n—> cube|rollup —> having —> select —> distinct —> order by
ORACLE sql 执行顺序、Case When 、查看执行的sql语句
标准的 SQL 的解析顺序为:n   (1) FROM 子句, 组装来自不同数据源的数据n   (2) WHERE 子句, 基于指定的条件对记录进行筛选n   (3) GROUP BY 子句, 将数据划分为多个分组n   (4) 使用聚合函数进行计算n   (5) 使用 HAVING 子句筛选分组n   (6) 计算所有的表达式n   (7) 使用 ORDER BY 对结果集进行排序nn nn适用...
sql语句执行顺序及简单优化
SQL的执行顺序nn(1)from (表关联,是从后往前、从右到左解析的) 所以尽量把数据量大的表放在最左边来进行关联n(2) on 需要从哪个数据表检索数据nn(3) join 多表连接时,使用表的别名并把别名前缀于每个Column上。可以减少解析的时间并减少那些由Column 歧义引起的语法错误.n(4) where 过滤表中数据的条件 (解析顺序是自下而上、从右到...
sql语句中各项的执行顺序
select …4… from …1..  where …2.. group by ..3…having ..5… order by ...6.nn nn上面就是sql语句中常见的各个功能的执行顺序nn注意点:在select中定义的别名无法再where和group by 后面进行使用nn错误案例:nnselect ifnull(chinese,0)+ifnull(math,0)+ifnull(en...
sql语句的执行顺序和别名问题
sql语句的别名问题: nwhere后不能用字段的别名因为一、sql执行顺序 n(1)from n(3)join n(2)on n(4)where n(5)group by(使用select中的别名) n(6)avg,sum…. n(7)having n(8)select n(9)distinct n(10)order by1、在MySQL中,group by中可以使用字段别名;wh
数据库中sql语句的执行顺序,技巧记忆
刚学的时候还是记得挺清楚的,但是过了一段时间不用就有点模糊了,现在来复习一遍n数据库中用到的关键字有 select , from ,where , group by ,having,order byn在mysql中还有limit.n首先,如果给我们一张表,我们是从(from)这张表开始查,然后如果需要过滤就(where)过滤,之后如果引用了聚合函数,就需要进行分组(group by),接下来如果我...
sql语句与执行update更新操作内的参数顺序关系
sql语句应该和执行更新操作的语句参数顺序相对应上,如图所示。
MySQL和Oracle 的SQL执行顺序
MySQL 执行顺序     from     on     join     where     group by     having     select      distinct     order by     limit          注:where条件的执行顺序,是从左到右     Oracle 执行顺序         from    on    join    where ...
Hive语句中sql条件的执行顺序
在hive和mysql中都可以通过explain+sql语句,来查看执行顺序。nn对于一条标准sql语句,它的书写顺序是这样的:nnnselect … from … where … group by … having … order by … limit …nnn(1)mysql语句执行顺序:nnnfrom... where...group by... having.... select ... ...
mysql中sql的执行顺序的坑
今天工作中碰到一个sql问题,关于left join的,后面虽然解决了,但是通过此问题了解了一下sql的执行顺序场景还原为避免安全纠纷,把场景模拟。有一个学生表-S,一个成绩表GCREATE TABLE `test_student` (n  `id` bigint(20) NOT NULL COMMENT '学号',n `sex` TINYINT DEFAULT '0' COMMENT '性别 0...
SQL语句中的AND和OR执行顺序问题
情景:一个搜索框 可以同时根据用户账号或者用户名字 搜索匹配条件的用户nnn如果搜索框中没有搜索条件 则查出所有教师用户nnn遇到的问题:n查询条件时为输入框内的内容 先在数据库中模拟测试 结果查询结果不符合nnnnn分析:n问题的关键就在于AND和OR的执行顺序问题。n查阅资料,关系型运算符优先级高到低为:NOTn >AND >ORn如果where 后面有OR条件
Sql语句中select from等结构的执行顺序
sql语句的分类:nn DDL:数据库定义语言,主要用于定义表和列(create drop alter)nnDML:数据库操作语言,操作数据库中的记录(insert  delete update)nnDQL:数据库查询语言,查询数据库中的记录(select  from)nnDCL:数据库控制语言,数据库权限和安全级别的控制(grant  revoke)nnsql语句的编写顺序:nnSQL语句的编写...
Mysql 语句执行顺序
纸上得来终觉浅n1.这样一个问题,作为一个开发人员需要掌握数据库的哪些东西?  在开发中涉及到数据库,基本上只用到了sql语句,如何写sql以及对其进行优化就比较重要,那些mysql的厚本书籍针对的是DBA,我们只需要学习其中的sql就可以了。n2.既然会写sql是目标,那么怎么才能写好sql.学习下面几点:n1)Mysql的执行顺序,这个是写sql的核心,之前遇到的一些错误就是因为对其不了
MySQL查询语句各关键字的执行顺序
一、书写顺序和执行顺序nn书写sql语句时各关键字的顺序: nselect nfrom nwhere ngroup by nhaving norder bynn执行顺序: nfrom nwhere ngroup by nhaving nselect norder bynn二、实例分析nnnnSELECT lord 主公ID, MIN(wuli) 武力下限nFROM wujiangnWHERE wu...
SQL语句的执行顺序和优化
SQL语句的执行顺序:n查询中用到的关键词主要包含六个,并且他们的顺序依次为 :nselect–from–where–group by–having–order byn其中select和from必须按照顺序执行,其他关键词是可选的,这六个关键词的执行顺序:nfrom–where–group by–having–select–order by,nfrom:先确定从哪个表中取数据,所以最先执行from...
JAVA方法SQL语句执行顺序
项目经过首轮测试,提出了N个改进优化方案。加一块大概有150条新的改动,我那块需要改动20来处。nnnn于是最近又忙的不亦乐乎,虽然拿着极低的实习工资。但每天还是坚持完成自己的本职工作,很少有懈怠心里。nnnn昨天在做查询的时候,碰到个问题。目的就是想在原有的数据请求方法里加条件判断,从前台传入相应的值,调用后台方法获取到需要的数据,然后渲染到页面。nnnn看起来确实很简单,事实上也是很简单...
oracle sql 的执行顺序
SQL Select语句完整的执行顺序: nn1、from子句组装来自不同数据源的数据;nn2、where子句基于指定的条件对记录行进行筛选;nn3、group by子句将数据划分为多个分组;nn4、使用聚集函数进行计算;nn5、使用having子句筛选分组;nn6、计算所有的表达式;nn7、select 的字段;nn8、使用order by对结果集进行排序。nn
Mysql学习-02 sql执行顺序与索引分析
1.性能下降SQL慢 执行时间长 等待时间长原因:nn  查询数据过多n   关联了太多的表,太多join n   没有充分利用到索引 -- > 单值,复合 Mysql一般情况下,查询一张表只会用到其中的一个索引,所以单值索引有时候并不能把sql的查询条件都纳入索引查找范围。所以需要适当的使用复合索引。n   服务器调优及各个参数设置(缓冲、线程数等)n2.常见通用的Join查询:nnSQL...
SQL优化(三)执行顺序
   对“SQL优化(一)” 中创建的表执行增删改查等操作,并查看这些操作的执行过程。如“查询课程编号为2 或教师证编号为3 的老师信息”。相应的SQL查询语句如下:nnnselect Teacher.* from Teacher, Course, TeacherCard where Teacher.Id = Course.TeacherID and Teacher.CardID = Teach...
MySQL SELECT执行顺序
mysql select 执行顺序, select语句执行顺序, select 执行顺序, sql select执行顺序, mysql语句执行顺序n1、FORM: 对FROM左边的表和右边的表计算笛卡尔积,产生虚表VT1。n2、ON: 对虚表VT1进行ON过滤,只有那些符合<join-condition>的行才会被记录在虚表VT2中。n3、JOIN: 如果指定了OUTER JOIN(比如left join、 right join),那么保留表中未匹配的行就会作为外部行添加到虚拟表VT2中,产生虚拟表VT3。
SQL执行顺序
SQL执行顺序介绍
查询语句的执行顺序
查询语句的执行顺序
oracle的sql语句,where后面的部分,执行顺序是从左往右,还是从右往左?
oracle的sql语句,where后面的部分,执行顺序是从左往右,还是从右往左?是从右往左
sqlserver where子句中多个and的执行顺序问题
在转换相关字段(如varchar转int)的时候,需要前面的and把特殊的不能转换的字符过滤掉,如‘–’,此时,需要依赖and的查询顺序。经测验,and子句没有明显的查询顺序要求,也就是说,只要and中包含了过滤条件,不管过滤条件在什么位置,执行都会成功。n下面的sql的执行结果是相同的。nSELECT AlarmLevel FROM AlarmCountConfig WHERE CONVERT(...
下面SQL语句执行的顺序是什么?
下面SQL语句执行的顺序是什么?nnselect  foo,count(foo)  from  pokesnnwhere foo&amp;gt;10nngroup by foonnhaving count (*)&amp;gt;5nnorder by foo nn答:FROM-&amp;gt;WHERE-&amp;gt;GROUP BY-&amp;gt;HAVING-&amp;gt;SELECT-&amp;gt;ORDER BY...
SQL逻辑查询语句执行顺序
SELECT empid, OrderYear=YEAR(orderdate), Numbers=COUNT(*)nFROM Sales.OrdersnWHERE custid=71nGROUP BY empid, YEAR(orderdate)nHAVING COUNT(*)&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;1nORDER BY empid, OrderYear nnnnSQL逻辑查询语句执行顺序nnnFROMnWHER...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 数据库课程设计疑问 数据库课程设计疑问