Oracle SQL查询过程

本文详细介绍了OracleSQL查询的解析过程,包括语法分析、语义分析、视图转换、表达式转换、CBO优化器选择、连接方式及顺序、数据搜索路径,以及HASH特性在缓存中的应用。还讨论了SQL执行顺序,如单表、多表连接和不同类型的连接方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle SQL查询过程

问题

一个SQL语句查询到数据显示的过程可以讲一下吗?

SQL语句的解析过程

服务器进程接收到一个sql语句时,首先要将其转换成执行这个sql语句的最有效的步骤,这个步骤被称为执行计划。

Oracle内部解析SQL的过程:

  1. 语法分析:分析语句语法是否符号规范,衡量语句汇总各个表达式(子句)的含义
  2. 语义分析:检查语句中涉及到的所有的数据库对象是否存在(表、列、视图、同义词……)并且它会检查你的相应权限
  3. 视图转换:将涉及视图的查询语句转换为相应的对基表的查询语句
  4. 表达式转换:将复制的SQL语句拆分或者转换成比较简单的表达式
  5. 选择合适的优化器:CBO(基于开销)RBO(基于规则)不用的优化器会产生不同的开销和不同的执行计划
  6. 选择连接方式:Oracle中有基于优化器的几种连接方式,对多表连接来说Oracle肯定会选择一个合适的连接方式进行连接
  7. 选择连接顺序:对多表连接来说Oracle会选择哪一对表先连接,选择这两张表中哪个表作为源数据表
  8. 选择数据的搜索路径:根据上面我们提到的相关选择,做出合适的数据搜索路径,产生相应的执行计划
  9. 在产生的执行计划中找到最优的执行计划
  10. 按照最优的执行计划执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tzq@2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值