mysql where执行顺序_mysql ifnul从join on和where执行顺序认识T-SQL查询处理执行顺序

SQL语句中join连表时on和where后都可以跟条件,那么对查询结果集,执行顺序,效率是如何呢?

通过查询资料发现:

区别:on是对中间结果进行筛选,where是对最终结果筛选。

执行顺序:先进行on的过滤, 而后才进行join。

效率:如果是inner join, 放on和放where产生的结果一样, 但没说哪个效率速度更高? 如果有outer join (left or right), 就有区别了, 因为on生效在先, 已经提前过滤了一部分数据, 而where生效在后.

最后来了解下T-SQL对查询逻辑处理。

T-SQL逻辑查询的各个阶段:(5)SELECT DISTINCT TOP()

(1)FROM JOIN ON

(2)WHERE

(3)GROUP BY

(4)HAVING

(6)ORDER BY

www.002pc.com认为此文章对《mysql ifnul从join on和where执行顺序认识T-SQL查询处理执行顺序》说的很在理,002pc.com为你提供最佳的学习电脑,学习mysql。T-SQL在查询各个阶级分别干了什么:(1)FROM 阶段

FROM阶段标识出查询的来源表,并处理表运算符。在涉及到联接运算的查询中(各种join),主要有以下几个步骤:

a.求笛卡尔积。不论是什么类型的联接运算,首先都是执行交叉连接(cross join),求笛卡儿积,生成虚拟表VT1-J1。

b.ON筛选器。这个阶段对上个步骤生成的VT1-J1进行筛选,根据ON子句中出现的谓词进行筛选,让谓词取值为true的行通过了考验,插入到VT1-J2。

c.添加外部行。如果指定了outer join,还需要将VT1-J2中没有找到匹配的行,作为外部行添加到VT1-J2中,生成VT1-J3。

经过以上步骤,FROM阶段就完成了。概括地讲,FROM阶段就是进行预处理的,根据提供的运算符对语句中提到的各个表进行处理(除了join,还有apply,pivot,unpivot)

(2)WHERE阶段

WHERE阶段是根据中条件对VT1中的行进行筛选,让条件成立的行才会插入到VT2中。

(3)GROUP BY阶段

GROUP阶段按照指定的列名列表,将VT2中的行进行分组,生成VT3。最后每个分组只有一行。

(4)HAVING阶段

该阶段根据HAVING子句中出现的谓词对VT3的分组进行筛选,并将符合条件的组插入到VT4中。

(5)SELECT阶段

这个阶段是投影的过程,处理SELECT子句提到的元素,产生VT5。这个步骤一般按下列顺序进行

a.计算SELECT列表中的表达式,生成VT5-1。

b.若有DISTINCT,则删除VT5-1中的重复行,生成VT5-2

c.若有TOP,则根据ORDER BY子句定义的逻辑顺序,从VT5-2中选择签名指定数量或者百分比的行,生成VT5-3

(6)ORDER BY阶段

根据ORDER BY子句中指定的列明列表,对VT5-3中的行,进行排序,生成游标VC6.

更多:mysql ifnul从join on和where执行顺序认识T-SQL查询处理执行顺序

https://www.002pc.comhttps://www.002pc.com/mysql/2021.html

你可能感兴趣的顺序,join,查询处理,SQL,where,执行

php系统 论文在thinkphp里面执行原生的sql语句

在thinkphp里面执行原生的sql语句怎样在thinkphp里面执行原生的sql语句?

php卡

PHP中该怎样防止SQL注入?

问题描述:

如果用户输入的数据在未经处理的情况下插入到一条SQL查询语句,那么应用将很可能遭受到SQL注入攻击,正如下面的例子:

$unsafe_variable = $_POST['

js音箱图Jquery ajax执行顺序 返回自定义错误信息(实例讲解)

1.多个Ajax 在一个function中的执行顺序

由于Jquery中的Ajax的async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false就可以了

php创建下载代码Php中用PDO查询Mysql来避免SQL注入风险的方法

当我们使用传统的 mysql_connect 、mysql_query方法来连接查询数据库时,如果过滤不严,就有SQL注入风险,导致网站被攻击,失去控制。

asp.net查询父页面变量赋值ASP.NET 页面事件执行顺序介绍

复制代码 代码如下:   #region 控件事件 第六步   protected void Button1_Click(object sender, EventArgs e)   {   //用这些事件来处理特定控件事件

php里面创建唯一thinkphp的where,页面跳转,时间配置,分页

·thinkphp里面的where函数和php里面的where运用方法不一样,但是道理是一样的。

php 查询数据并输出到文件php MySQL与分页效率

WHERE ... ORDER BY ... LIMIT ... 在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引: 举例

python英语电影视频自动翻译bat批处理之统计脚本执行时间

002pc.com对《python英语电影视频自动翻译bat批处理之统计脚本执行时间》总结来说,为我们python编码很实用。

python list转化为strPython如何防止sql注入

前言web漏洞之首莫过于sql了,不管使用哪种语言进行web后端开发,只要使用了关系型数据库,可能都会遇到sql注入攻击问题。那么在Python web开发的过程中sql注入是怎么出现的呢,又

0踩

0 赞

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值