首页 > 解决方案 > oracle表中如何从多个分区中选择数据

问题描述

我正在尝试从分区表中的多个分区中选择数据。它适用于单个分区 ( select * from table partition(ParititonName),但不能选择多个分区 ( select * from table partitions(Part1,part2)。请让我知道如何在单个查询中选择多个分区。

标签: sqloracle

解决方案


如果您需要在查询中显式处理分区名称 - 这不是典型的用例(因为您经常使用 WHERE 谓词进行分区修剪) - 但可能是这种情况hash partitioning,您可以使用UNION ALL来访问更多分区。

select * from TAB partition (Part1) 
union all
select * from TAB partition (Part2);

执行计划显示(参见 Pstart 和 Pstop 列)只有分区 1 和 2 被访问。

----------------------------------------------------------------------------------------------------
| Id  | Operation                   | Name | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
----------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |      |     2 |    86 |     4   (0)| 00:00:01 |       |       |
|   1 |  UNION-ALL                  |      |       |       |            |          |       |       |
|   2 |   PARTITION HASH SINGLE     |      |     1 |    43 |     2   (0)| 00:00:01 |     1 |     1 |
|   3 |    TABLE ACCESS STORAGE FULL| TAB  |     1 |    43 |     2   (0)| 00:00:01 |     1 |     1 |
|   4 |   PARTITION HASH SINGLE     |      |     1 |    43 |     2   (0)| 00:00:01 |     2 |     2 |
|   5 |    TABLE ACCESS STORAGE FULL| TAB  |     1 |    43 |     2   (0)| 00:00:01 |     2 |     2 |
----------------------------------------------------------------------------------------------------

推荐阅读