- 浏览: 499121 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (502)
- Java (70)
- Linux (10)
- 数据库 (38)
- 网络 (10)
- WEB (13)
- JSP (4)
- 互联网 (71)
- JavaScript (30)
- Spring MVC (19)
- HTML (13)
- CSS (3)
- AngularJS (18)
- Redis (5)
- Bootstrap CSS (1)
- ZooKeeper (4)
- kafka (6)
- 服务器缓存 (4)
- Storm (1)
- MongoDB (9)
- Spring boot (16)
- log4j (2)
- maven (3)
- nginx (5)
- Tomcat (2)
- Eclipse (4)
- Swagger (2)
- Netty (5)
- Dubbo (1)
- Docker (7)
- Hadoop (12)
- OAuth (1)
- webSocket (4)
- 服务器性能 (7)
- Session共享 (1)
- tieye修改 (1)
- 工作 (1)
- 有用的语录 (0)
- https (2)
- common (5)
- 产品开发管理 (1)
- CDN 工作原理 (1)
- APNS、GCM (1)
- 架构图 (3)
- 功能实现分析 (1)
- JMX (1)
- 服务器相关操作命令 (1)
- img02 (0)
- 服务器环境搭建 (9)
- goodMenuBook (1)
- CEInstantPot (0)
- 有用数据 (1)
- 百度地图WEB API (2)
- 正则表达式 (1)
- 样式例子 (2)
- staticRecipePressureCooker.zip (1)
- jCanvas (1)
- 网站攻击方法原理 (1)
- 架构设计 (3)
- 物联网相关 (3)
- 研发管理 (7)
- 技术需求点 (1)
- 计划 (1)
- spring cloud (11)
- 服务器开发的一些实用工具和方法 (1)
- 每天学到的技术点 (4)
- Guava (1)
- ERP 技术注意要点 (2)
- 微信小程序 (1)
- FineRepor (1)
- 收藏夹 (1)
- temp (5)
- 服务架构 (4)
- 任职资格方案 (0)
- osno_test (1)
- jquery相关 (3)
- mybatis (4)
- ueditor (1)
- VueJS (7)
- python (10)
- Spring EL (1)
- shiro (1)
- 前端开发原理与使用 (7)
- YARN (1)
- Spark (1)
- Hbase (2)
- Pig (2)
- 机器学习 (30)
- matplotlib (1)
- OpenCV (17)
- Hystrix (1)
- 公司 (1)
- miniui (4)
- 前端功能实现 (3)
- 前端插件 (1)
- 钉钉开发 (2)
- Jenkins (1)
- elasticSearch使用 (2)
- 技术规范 (4)
- 技术实现原理 (0)
最新评论
sql执行顺序
1.第一个被处理的子句是FROM子句
2.每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。
其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序
与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行
from--where--group by--having--select--order by,
from:需要从哪个数据表检索数据
where:过滤表中数据的条件
group by:如何将上面过滤出的数据分组
having:对上面已经分组的数据进行过滤的条件
select:查看结果集中的哪个列,或列的计算结果
order by :按照什么样的顺序来查看返回的数据
from 子句--执行顺序为从后往前、从右到左
where子句--执行顺序为自下而上、从右到左
group by--执行顺序从左往右分组
having 子句----很耗资源,尽量少用
select子句--少用*号,尽量取字段名称。
order by子句--执行顺序为从左到右排序,很耗资源
嵌套查询是以最外的作为一个表并每次执行子查询的方式来完成的。
select * from table where patindex('%字符%',a)>0
select * from table where charindex('字符',a)>0
经测试这两种方法比LIKE速度要快。
select * from table where a like '%字符%'
非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。
相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。
相关子查询,先执行主查询再执行子查询
在关联子查询中,对于外部查询返回的每一行数据,内部查询都要执行一次。另外,在关联子查询中是信息流是双向的。外部查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回它的记录。然后,外部查询根据返回的记录做出决策。
非相关子查询是独立于外部查询的子查询,子查询执行完毕后将值传递给外部查询
1.FROM:对FROM子句中前两个表执行笛卡尔积 生成虚拟表VT1
2.ON:对VT1表应用ON筛选器 只有满足 <join_condition>为真的行才被插入VT2
3.OUTER(JOIN):如果指定了OUTER JOIN 保留表(preserved table)中未找到的行将行作为外部行添加到VT2 生成T3
如果FROM包含两个以上表 则对上一个联结生成的结果表和下一个表重复执行步骤1和步骤3 直接结束
4.WHERE:对VT3应用WHERE筛选器 只有使 <where_condition>为TRUE的行才被插入VT4
5.GROUP BY:按GROUP BY子句中的列列表 对VT4中的行分组 生成VT5
6.CUBE|ROLLUP:把超组(Supergroups)插入VT6 生成VT6
7.HAVING:对VT6应用HAVING筛选器 只有使 <having_condition>为TRUE的组才插入VT7
8.SELECT:处理SELECT列表 产生VT8
9.DISTINCT:将重复的行从VT8中去除 产生VT9
10.ORDER BY:将VT9的行按ORDER BY子句中的列列表排序 生成一个游标 VC10
11.TOP:从VC10的开始处选择指定数量或比例的行 生成VT11 并返回调用者
in 的可以用inner join 的方式进行处理
1.第一个被处理的子句是FROM子句
2.每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。
其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序
与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行
from--where--group by--having--select--order by,
from:需要从哪个数据表检索数据
where:过滤表中数据的条件
group by:如何将上面过滤出的数据分组
having:对上面已经分组的数据进行过滤的条件
select:查看结果集中的哪个列,或列的计算结果
order by :按照什么样的顺序来查看返回的数据
from 子句--执行顺序为从后往前、从右到左
where子句--执行顺序为自下而上、从右到左
group by--执行顺序从左往右分组
having 子句----很耗资源,尽量少用
select子句--少用*号,尽量取字段名称。
order by子句--执行顺序为从左到右排序,很耗资源
嵌套查询是以最外的作为一个表并每次执行子查询的方式来完成的。
EXISTS 执行顺序 select * from a where a.s_status=1 and exists (select orderid from b where a.orderid=b.orderid) exists执行顺序 1.首先exists 返回的是true或false 2.查询一条a的数据,会去执行exists 若返回true则存在结果集中,再执行a的下一条数据,直到a的数据执行完 3.exists 里的数据是怎么执行的呢?只要满足条件就会返回true,没必要把b表中的数据都查询一遍
select * from table where patindex('%字符%',a)>0
select * from table where charindex('字符',a)>0
经测试这两种方法比LIKE速度要快。
select * from table where a like '%字符%'
非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。
相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。
相关子查询,先执行主查询再执行子查询
在关联子查询中,对于外部查询返回的每一行数据,内部查询都要执行一次。另外,在关联子查询中是信息流是双向的。外部查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回它的记录。然后,外部查询根据返回的记录做出决策。
非相关子查询是独立于外部查询的子查询,子查询执行完毕后将值传递给外部查询
1.FROM:对FROM子句中前两个表执行笛卡尔积 生成虚拟表VT1
2.ON:对VT1表应用ON筛选器 只有满足 <join_condition>为真的行才被插入VT2
3.OUTER(JOIN):如果指定了OUTER JOIN 保留表(preserved table)中未找到的行将行作为外部行添加到VT2 生成T3
如果FROM包含两个以上表 则对上一个联结生成的结果表和下一个表重复执行步骤1和步骤3 直接结束
4.WHERE:对VT3应用WHERE筛选器 只有使 <where_condition>为TRUE的行才被插入VT4
5.GROUP BY:按GROUP BY子句中的列列表 对VT4中的行分组 生成VT5
6.CUBE|ROLLUP:把超组(Supergroups)插入VT6 生成VT6
7.HAVING:对VT6应用HAVING筛选器 只有使 <having_condition>为TRUE的组才插入VT7
8.SELECT:处理SELECT列表 产生VT8
9.DISTINCT:将重复的行从VT8中去除 产生VT9
10.ORDER BY:将VT9的行按ORDER BY子句中的列列表排序 生成一个游标 VC10
11.TOP:从VC10的开始处选择指定数量或比例的行 生成VT11 并返回调用者
in 的可以用inner join 的方式进行处理
发表评论
-
SQL常用语句
2022-07-21 19:09 216delete from cacherefresh where ... -
ES数据同步方案
2022-06-24 10:57 2319//============================= ... -
SQL存储过程例子和有用的SQL
2022-02-19 09:20 207delete from cacherefresh where ... -
SQL优化对比与总结
2021-01-09 14:44 38219000000 b表 SELECT * from b w ... -
执行存储过程测试
2020-12-30 16:47 389--执行存储过程创建 if (exists (select * ... -
mysql提高insert into 插入速度的方法
2018-12-14 17:26 6120mysql提高insert into 插入 ... -
Mysql并发时经典常见的死锁原因及解决方法
2018-12-08 09:30 3071Mysql并发时经典常见的死锁原因及解决方法 MySQL有 ... -
数据库沉余实现方式
2018-12-04 17:30 1028数据库沉余实现方式 canal 原理相对比较简单: (1)c ... -
最终一致性的常用做法
2018-12-01 22:28 647最终一致性的常用做法 ... -
库存扣减和锁
2018-11-29 16:19 2库存扣减和锁 在对数据库的值进行修改时,如果在多线程情况下 ... -
Spring Boot中整合Sharding-JDBC
2018-11-26 18:03 3450Spring Boot中整合Sharding-JDBC ... -
MYSQL 主从、读写分离、分库分表、高可用、数据安全
2018-11-19 18:03 1740MYSQL 主从、读写分离、分库分表、高可用、数据安全 ... -
mybatis-generator 使用
2018-05-19 11:29 565http://www.cnblogs.com/Jason-Xi ... -
eclipse JPA Tools 使用
2018-05-14 17:11 782https://blog.csdn.net/guoxin91/ ... -
mybatis 通用查询实现
2018-03-26 10:04 1430package com.oceano.modity.entit ... -
存储过程 函数
2017-10-27 17:59 484存储过程 函数 存储过 ... -
分页查询例子
2017-10-19 10:22 784分页查询例子 Mybatis分页插件PageHelper的 ... -
数据库同步工具
2017-10-14 14:27 1345数据库同步工具 goden gate Oracle Go ... -
ETL工具
2017-09-01 15:14 774ETL工具 ETL,是英文 Extract-Transfor ... -
PowerDesigner 对比pdm文件内容变化工具
2017-08-06 14:24 709PowerDesigner 对比pdm文件内容变化工具
相关推荐
SQL 执行顺序大总结 SQL 执行顺序是一个非常重要的概念,对于任何一个 SQL 开发者来说都非常重要。今天,我们将深入探讨 SQL 执行顺序的每一个步骤,从 FROM 到 SELECT,了解每一个步骤的执行顺序和细节。 FROM ...
SQL执行顺序介绍
Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序Sql语句执行顺序
### SQL语句执行顺序说明 #### 一、SQL语句准备执行阶段 当SQL语句进入Oracle的库缓存后,为了确保其能够被正确执行,Oracle会经历一系列的检查和准备过程。这一阶段主要涉及以下几个步骤: 1. **语法检查**:...
SQL Server 查询处理中的各个阶段,即SQL执行顺序,是数据库管理系统执行SQL语句时的一系列逻辑步骤。这个顺序对于理解查询如何工作以及优化查询性能至关重要。以下是对这些步骤的详细解释: 1. FROM子句:这是查询...
分组查询GROUP BY是SQL语言中用于对...总之,理解GROUP BY的使用以及SQL执行顺序对于编写高效、准确的SQL查询至关重要。通过合理运用这些概念,我们可以对大量数据进行有效的分析和处理,从而得出有价值的统计信息。
### NCR Teradata SQL执行分析 #### 一、Teradata数据分布与主索引(PPI) 在Teradata数据库中,数据分布与主索引(Primary Index, PI)密切相关。这决定了数据如何分布在不同的AMP(Access Method Processor)上,...
互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术...
### SQL查询原理及执行顺序详解 SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言,其查询原理和执行顺序对于数据库性能优化至关重要。本文将深入探讨SQL查询的执行过程,帮助读者理解如何...
了解 SQL 语句的执行顺序可以帮助开发人员更好地优化查询语句,提高数据库性能。 SQL 语句的执行顺序可以分为 11 个步骤: 1. FROM 子句:首先对 FROM 子句中的前两个表执行一个笛卡尔乘积,生成虚拟表 vt1。 2. ...
该工具的一个关键特性是能够调整脚本执行顺序。这允许用户根据业务需求或依赖关系定制执行流程,确保脚本按正确的顺序执行,避免因为先执行了依赖于后续脚本的命令而导致错误。 此外,脚本可视化功能为用户提供了一...
### SQL Select 语句完整的执行顺序 在数据库查询语言(SQL)中,`SELECT`语句是最常用的查询数据的方式之一。正确理解`SELECT`语句的执行顺序对于编写高效、准确的查询至关重要。本文将详细介绍SQL Select语句的...
### SQL查询的逻辑执行顺序详解 #### 一、引言 SQL(Structured Query Language)作为数据库操作的标准语言,在数据检索、管理和分析方面扮演着至关重要的角色。为了更高效地理解和优化SQL查询,了解其背后的执行...
SQL 语句的解析顺序是一个复杂的过程,它涉及到多个步骤和子句的执行顺序。在这篇文章中,我们将详细地讲述 SQL 语句的解析顺序,包括 FROM、WHERE、GROUP BY、HAVING、SELECT 等子句的执行顺序。 首先,FROM 子句...
2. **自定义执行顺序**:对于有依赖关系的脚本,用户可以调整执行顺序,确保脚本按照正确的逻辑顺序运行。 3. **参数化查询**:支持使用参数化查询,使脚本更通用,适应不同的环境和需求。 4. **事务管理**:提供...
当同时出现了where_group_by_having_order_by的时候_执行顺序和编写顺序时的用法
首先,SQL执行顺序可以概括为以下步骤: 1. FROM:这一阶段,SQL引擎开始处理FROM子句中的表,通常是根据表的大小进行笛卡尔乘积,生成虚拟表VT1。如果只有一个表,则直接使用该表,如果有多个表,则会进行连接操作...
了解T-SQL语句的执行顺序对于优化查询性能和编写更高效的代码至关重要。以下是对标题和描述中所述知识点的详细说明: 1. **SELECT**: SELECT语句用于从一个或多个表中选取数据。在T-SQL中,这是执行的第一步,它...