【发布时间】:2015-04-09 08:16:10
【问题描述】:
我想咨询三个方面的性能(Oracle 11g)。
1./如果我用关键字“WITH”定义临时表,比如
WITH tbl AS (
SELECT [columns from both tables...]
FROM table_with_inexes
JOIN other_table ...
)
SELECT ...
FROM tbl
JOIN xxx ON tbl.column = xxx.column
该临时表上的后续选择是否能够使用在 table_with_inexes 和 other_table 上定义的索引?
2./ 是否可以在类似上面的单个SQL命令中为“WITH”创建的临时表添加索引?
3./ 当我有这样的构造时:
...
LEFT JOIN (
SELECT indexedColumn, otherColumns
FROM table
JOIN other_table
GROUP BY ...
) C
ON (outerTable.indexedColumn = C.indexedColumn)
Oracle 在哪些情况下可以在 indexedColumn 上使用索引?我假设,LEFT JOIN 中的选择只是不维护索引的“投影”,因此在不使用索引的情况下评估连接的 ON 子句评估?
【问题讨论】:
标签: sql oracle performance