как выбрать данные из нескольких разделов в таблице оракула - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь выбрать данные из нескольких разделов в многораздельной таблице.Он работает для одного раздела (select * from table partition(ParititonName), но не может выбрать несколько разделов (select * from table partitions(Part1,part2). Не могли бы вы дать мне знать, как выбрать несколько разделов в одном запросе.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Если вам нужно явно указать имена разделов в вашем запросе - что не является типичным случаем использования (поскольку вы часто используете предикат 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 |
----------------------------------------------------------------------------------------------------
0 голосов
/ 24 сентября 2018

Вам не нужно заботиться об этом.«Раздел» относится к «хранилищу», Oracle заботится об этом.Все, что вам нужно, - это выполнить любой запрос, например, если таблица EMP разбита на столбец DEPTNO (каждый отдел идет в свой собственный раздел), вы все равно выполняете

select deptno, empno, ename, sal
from emp
where deptno in (10, 20);

Вы не указываетераздел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...