Oracle中很多SQL操作都会使用Temp Space临时空间,理想状况下OLTP环境中自动/手动管理的PGA总是能在私有内存中满足这些操作的空间需求,而在Data Warehouse数据仓库中往往我们需要配置一个巨大的临时表空间(组)来满足海量的维护/查询对临时空间的需求,那么到底有哪些SQL操作时需要用到临时空间的呢?Google了一下,似乎没有一张非常完整的列表,这里由我抛砖引玉地列出一些,当然这远远不够全面:
SQL CODE |
Type |
CREATE INDEX |
DDL |
REBUILD INDEX |
DDL |
ANALYZE |
DDL |
CREATE PRIMARY KEY CONSTRAINT |
DDL |
ENABLE CONSTRAINT |
DDL |
CREATE TABLE AS SELECT(use permanet TBS) |
DDL |
SELECT DISTINCT |
QUERY |
ORDER BY |
Clause |
GROUP BY |
Clause |
UNION ALL |
Clause |
UNION |
Clause |
MINUS |
Clause |
INTERSECT |
Clause |
ROLLUP() FUNCTION |
FUNCTION |
RANK() FUNCTION |
FUNCTION |
CONNECT BY |
Clause |
TEMPORARY TABLE |
Temporary Data |
LOB_DATA |
LOB |
LOB_INDEX |
LOB |
HASH GROUP BY |
Operation |
HASH JOIN |
Operation |
HASH JOIN (ANTI) |
Operation |
HASH JOIN (SEMI) |
Operation |
SORT MERGE JOIN |
Operation |
SORT MERGE Anti-Join |
Operation |
SORT MERGE Semi-Join |
Operation |
SORT GROUP BY |
Operation |
IDX MAINTENANCE (SORT) |
Operation |
WINDOW (SORT) |
Operation |
ROLLUP (SORT) |
Operation |
CONNECT-BY (SORT) |
Operation |
UNION |
Operation |
UNION ALL |
Operation |
SORT AGGREGATE |
Operation |
SORT UNIQUE |
Operation |