SQL Select语句完整的执行顺序:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用聚集函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序。
oracle 语句提高查询效率的方法
1:.. where column in(select * from ... where ...);
2:... where exists (select 'X' from ...where ...);
第二种格式要远比第一种格式的效率高。在Oracle中可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询
使用EXISTS,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间
Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中
选择最有效率的表名顺序(只在基于规则的优化器中有效)
ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理。在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。当ORACLE处理多个表时,会运用排序及合并的方式连接它们。首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行派序,然后扫描第二个表(FROM子句中最后第二个表),最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并。
如果有3个以上的表连接查询,那就需要选择交叉表(intersection table)作为基础表,交叉表是指那个被其他表所引用的表。
WHERE子句中的连接顺序
ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。
oracle select执行顺序的详解
2019-11-23 19:21oracle教程网 Oracle
本篇文章是对oracle select执行顺序进行了详细的分析介绍,需要的朋友参考下
延伸 · 阅读
- 2022-06-28使用Docker制作Python环境连接Oracle镜像
- 2022-06-26golang select 机制和超时问题
- 2022-03-08Linux下Select多路复用实现简易聊天室示例
- 2022-03-07Oracle Linux 能否成为企业级 CentOS 的替代品?
- 2022-03-05Oracle VM VirtualBox 虚拟机硬盘扩容
- 2022-02-28oracle删除超过N天数据脚本的方法
- Oracle
ORACLE 系统函数大全SQLSERVER系统函数的异同
下面是Oracle支持的字符函数和它们的Microsoft SQL Server等价函数。...
- Oracle
Oracle 批处理自动备份bat脚本语句的步骤详解
这篇文章主要介绍了Oracle 批处理自动备份bat脚本语句的步骤详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友...
- Oracle
Oracle 获得以百分号结尾的脚本有三种写法
本节主要介绍了Oracle 获得以百分号结尾的脚本有三种写法,以获得ID=4443的数据行为例 ...
- Oracle
oracle 多个字符替换实现
CSDN上的一个网友,需要一个sql语句的解决方案需求是这样的求写oracle多个字符替换(有测试数据) ...
- Oracle
Oracle除去数据中的换行符以免读取出现问题
将整条数据取出,并用特殊符号分割,如果数据出现换行的情况,那么读取时就有问题,这时就可以采用下面的方法来去除 ...
- Oracle
oracle中add_months()函数及用法总结
这篇文章主要介绍了oracle中add_months()函数及用法总结,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下 ...
- Oracle
Oracle数据库的空间管理技巧
在oracle数据库中,DBA可以通过观测一定的表或视图来了解当前空间的使用状况,进而作出可能的调整决定 ...
- Oracle
Oracle与Mysql自动增长列(id)的区别
这篇文章主要介绍了Oracle与Mysql自动增长列(id)的区别,需要的朋友可以参考下 ...