oracle select执行顺序的详解

 更新时间:2013年05月30日 11:11:03   作者:  
本篇文章是对oracle select执行顺序进行了详细的分析介绍,需要的朋友参考下
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中直方图对执行计划的影响详解

    Oracle中直方图对执行计划的影响详解

    这篇文章主要给大家介绍了关于Oracle数据库中直方图对执行计划的影响的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09
  • MySQL安全性指南(3)(转)

    MySQL安全性指南(3)(转)

    MySQL安全性指南(3)(转)...
    2007-03-03
  • Linux服务器下oracle实现rman自动备份的方式

    Linux服务器下oracle实现rman自动备份的方式

    为确保oracle数据库数据的安全和一致性,一般我们都需要利用备份手段进行数据库的备份,在oracle数据库中,rman因其强大的功能和完善的手段,成为数据库备份的首选,故以下通过两种方式配置脚本,实现rman自动备份,需要的朋友可以参考下
    2024-11-11
  • Oracle数据库中的优化方法

    Oracle数据库中的优化方法

    这篇文章主要给大家介绍了Oracle数据库中的优化方法,Oracle数据库是当前应用最广泛的大型数据库之一,其系统结构复杂,性能受多方面因素影响,其中查询操作是影响其性能的关键因素,需要的朋友可以参考下
    2023-07-07
  • Oracle中TIMESTAMP的几种类型介绍与实例

    Oracle中TIMESTAMP的几种类型介绍与实例

    我们都知道date和timestamp都是对日期和时间的表示,只是两种类型的精确度不同,前者精确到秒,后者精确到小数秒(fractional_seconds_precision),可以是 0 to 9,缺省是6。这篇文章主要介绍了Oralce中TIMESTAMP的几种类型。有需要的朋友们可以参考借鉴。
    2016-12-12
  • oracle数据库密码到期怎么解决

    oracle数据库密码到期怎么解决

    这篇文章主要介绍了oracle数据库密码到期的解决方法,非常不错,具有参考借鉴价值,需要的的朋友参考下
    2017-02-02
  • Linux下启动Oracle服务和监听程序步骤

    Linux下启动Oracle服务和监听程序步骤

    这篇文章给大家介绍了Linux下启动Oracle服务和监听程序步骤,在文章末尾给大家介绍了Oracle数据库的启动和关闭方式小结,感兴趣的朋友一起看看吧
    2017-08-08
  • 详解Oracle在out参数中访问光标

    详解Oracle在out参数中访问光标

    这篇文章主要介绍了详解Oracle在out参数中访问光标的相关资料,这里提供实例代码帮助大家学习理解这部分内容,希望能帮助到大家,需要的朋友可以参考下
    2017-08-08
  • 查找oracle数据库表中是否存在系统关键字的方法

    查找oracle数据库表中是否存在系统关键字的方法

    遇到列说明无效的报错情况,这是由于数据库列名起的不好引起的,名字用到了数据库的关键字
    2014-07-07
  • Oracle数据库升级或数据迁移方法研究

    Oracle数据库升级或数据迁移方法研究

    本文详细论述了oracle数据库升级的升级前的准备、升级过程和升级后的测试与调整工作,并对各种升级方法在多种操作系统平台上作了测试。
    2016-07-07

最新评论