oracle - 表连接效率问题

标签 oracle performance

跨表联接时(如下例所示),联接表或联接仅包含所需列的子查询之间是否存在效率差异?

也就是说,这两个表的效率有区别吗?

SELECT result
  FROM result_tbl
  JOIN test_tbl                    USING (test_id)
  JOIN sample_tbl                  USING (sample_id)
  JOIN (SELECT request_id
          FROM request_tbl
         WHERE request_status='A') USING(request_id)

对比

SELECT result
  FROM (SELECT result,  test_id   FROM result_tbl)
  JOIN (SELECT test_id, sample_id FROM test_tbl)   USING(test_id)
  JOIN (SELECT sample_id          FROM sample_tbl) USING(sample_id)
  JOIN (SELECT request_id
          FROM request_tbl
         WHERE request_status='A')                 USING(request_id)

最佳答案

确定的唯一方法是在打开跟踪的情况下运行两者,然后查看跟踪文件。但很可能它们会受到相同的对待:优化器会将所有内联 View 合并到主语句中,并得出相同的查询计划。

关于oracle - 表连接效率问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/853495/

相关文章:

java - Java 后端服务的性能测试

PHP - array_map 比 foreach 快吗?

performance - 在小于 O(n^2) 的时间内在 2D 平面中找到距离最小的给定点集中的两个点

sql - SELECT SUM 在没有记录时返回一行

database - 在不指定列详细信息的情况下从命令行将 CSV 文件加载到 Oracle 数据库的新表中的简便方法

oracle - 将数据从 Oracle 移动到 Cassandra 和/或 MongoDB

java - string.tolowercase 在小写字符串上的表现

java - ORA-01031 : insufficient privileges creating JMS connection to Oracle topic

oracle - ORA-24338 : Statement handle not executed

sql-server - 是否在未使用约束更新列的 SQL 更新语句上检查外键约束?