sql - oracle表中如何从多个分区中选择数据
问题描述
我正在尝试从分区表中的多个分区中选择数据。它适用于单个分区 ( select * from table partition(ParititonName)
,但不能选择多个分区 ( select * from table partitions(Part1,part2)
。请让我知道如何在单个查询中选择多个分区。
解决方案
如果您需要在查询中显式处理分区名称 - 这不是典型的用例(因为您经常使用 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 |
----------------------------------------------------------------------------------------------------
推荐阅读
- azure-devops - 您可以自定义 VSTS 发布定义的构建版本下拉列表吗
- c++ - 如何从处于低功耗状态的 USB 设备获取字符串描述符?
- plot - 在 Mathematica 中绘制多条网格线并给出单独的标签
- python - 在 Python 3 中哪个更适合字符串反转?
- sqlite - 在服务器上使用带有 TCL/sqlite3 的 ORDER BY 时出错
- bash - 在不同服务器和端口上执行 netcat 操作的 Bash 脚本
- javascript - Dialogflow 完成响应
- typo3 - TYPO3:将类别传递给掩码内容元素
- python - Flask 首次运行:不要在生产环境中使用开发服务器
- python - 特定日期的 Python For 循环