Oracle 如何处理(选择/位置)和连接执行计划

Posted

技术标签:

【中文标题】Oracle 如何处理(选择/位置)和连接执行计划【英文标题】:How Oracle handles (select/where) and a join execution plan 【发布时间】:2015-11-16 12:36:19 【问题描述】:

如果我有这样一个简单的查询:

SELECT table1.col3, table2.col3 FROM table1 LEFT OUTER JOIN table2
ON table1.col1 = table2.col1
WHERE table1.col2>0;

-Oracle 执行计划是先选择 table1 中满足 where 子句条件的所有内容,然后加入表或虎钳还是顺序的,还是找到节省资源或性能的最佳路线?

【问题讨论】:

为什么不看执行计划? 它将根据它认为最快的方式生成一个查询计划,并按照这种方式执行。您将在查询计划中看到它在做什么 这里有两个关于 Oracle 基于成本的优化器的非常好的文档 - The Oracle Optimizer Explain the Explain Plan、The Optimizer。 【参考方案1】:

Oracle 是一个功能强大的数据库,它为这样的查询提供了多种不同的选项。特定类别的算法包括嵌套循环连接、散列连接、合并连接和基于索引的连接。优化器根据数据和软硬件环境的特点选择最佳的执行计划。

如果您有大表并且col2 > 0 具有相当的选择性并且在table1(col2) 上有一个索引,那么Oracle 可能会先使用该索引进行过滤,然后再执行连接。

【讨论】:

基于索引的连接本身并不是一种连接类型。索引可以像任何其他表一样使用常规嵌套循环、哈希和合并连接算法与其他表和索引连接,因为索引只不过是表的精简排序版本。

以上是关于Oracle 如何处理(选择/位置)和连接执行计划的主要内容,如果未能解决你的问题,请参考以下文章

您如何处理在 IIS 上运行的网站的计划任务?

用户选择允许后如何处理启用位置服务?

Oracle 如何处理给定的 SQL 语句

MacBook m1 pro python cx-oracle提示不是x86如何处理?

如何处理具有相似属性的维度?

数据库连接不上,啥情况,该如何处理