当我使用 Oracle SQL Developer 获取上述查询的自动跟踪输出时,我发现连接条件用于访问和过滤谓词。我的问题是,它是否从DEPT_ID_PK读取所有department_ids,然后使用这些ID来访问和过滤员工表?如果是这样,为什么员工表要进行全表扫描?为什么它使用departments表的department_ids再次读取employees表?谁能简单地一步步阅读这个执行计划,并解释一下这里使用访问谓词和过滤谓词的原因吗?
最诚挚的问候
最佳答案
它是合并联接(有点像散列联接,当联接表的投影在联接列上排序时使用合并联接。合并联接比散列联接速度更快,使用的内存更少)。
因此Oracle对外表(EMPLOYEES)进行全表扫描,并以有序方式读取内表。
过滤谓词是要进行投影的列
关于oracle - 为什么这里的访问谓词和过滤谓词是相同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65716287/