• 售前

  • 售后

热门帖子
入门百科

oracle select执行次序的详解

[复制链接]
天亮再走己 显示全部楼层 发表于 2021-10-26 13:30:16 |阅读模式 打印 上一主题 下一主题
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子句的末尾。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作