powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Partition pruning
12 сообщений из 12, страница 1 из 1
Partition pruning
    #39306513
partition
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создал таблицу
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE my_table
(  
  id number not null enable, 
  part_id   NUMBER NOT NULL ENABLE, 
  subpart_id NUMBER NOT NULL ENABLE
)
PARTITION BY RANGE (part_id) INTERVAL (1) 
 SUBPARTITION BY LIST (subpart_id) 
 SUBPARTITION TEMPLATE ( 
    SUBPARTITION SP1 VALUES ( 1 ), 
    SUBPARTITION SP2 VALUES ( 2 )
    )
(   
  partition p1 values less than (1)
);


Заполнил данными, выполнил запрос
Код: plsql
1.
2.
3.
select * from MY_TABLE t 
where t.part_id = 2 
and t.subpart_id = 2


План запроса:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
------------------------------------------------------------------------------
| Id  | Operation                | Name     | Rows | Bytes | Cost | Time     |
------------------------------------------------------------------------------
|   0 | SELECT STATEMENT         |          |    1 |    39 |   14 | 00:00:01 |
|   1 |   PARTITION RANGE SINGLE |          |    1 |    39 |   14 | 00:00:01 |
|   2 |    PARTITION LIST SINGLE |          |    1 |    39 |   14 | 00:00:01 |
| * 3 |     TABLE ACCESS FULL    | MY_TABLE |    1 |    39 |   14 | 00:00:01 |
------------------------------------------------------------------------------

Predicate Information (identified by operation id):
------------------------------------------
* 3 - filter("T"."PART_ID"=2)


У меня вопрос действительно ли Oracle фильтрует данные в subpartition или filter("T"."PART_ID"=2) просто принять к сведению?
...
Рейтинг: 0 / 0
Partition pruning
    #39306517
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
partition,

Внимательнее посмотреть на строки плана с ID 1 и 2.
...
Рейтинг: 0 / 0
Partition pruning
    #39306529
partition
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ID1 и ID2 говорит, что ORACLE сканирует конкретную сабпартицию, тогда зачем фильтр?
...
Рейтинг: 0 / 0
Partition pruning
    #39306532
partition
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что значит PARTITION COMBINED ITERATOR ?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select * from MY_TABLE subpartition(SYS_SUBP438440) t

----------------------------------------------------------------------------------
| Id | Operation                     | Name     | Rows | Bytes | Cost | Time     |
----------------------------------------------------------------------------------
|  0 | SELECT STATEMENT              |          |    1 |    39 |   14 | 00:00:01 |
|  1 |   PARTITION COMBINED ITERATOR |          |    1 |    39 |   14 | 00:00:01 |
|  2 |    TABLE ACCESS FULL          | MY_TABLE |    1 |    39 |   14 | 00:00:01 |
----------------------------------------------------------------------------------
...
Рейтинг: 0 / 0
Partition pruning
    #39306537
ORA__SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
partitionУ меня вопрос действительно ли Oracle фильтрует данные в subpartition или filter("T"."PART_ID"=2) просто принять к сведению?
Да. Фильтрует.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
SQL> CREATE TABLE my_table
  2    (
  3      id number not null enable,
  4      part_id   NUMBER NOT NULL ENABLE,
  5      subpart_id NUMBER NOT NULL ENABLE
  6    )
  7    PARTITION BY RANGE (part_id) INTERVAL (1)
  8     SUBPARTITION BY LIST (subpart_id)
  9     SUBPARTITION TEMPLATE (
 10        SUBPARTITION SP1 VALUES ( 1,2 ),
 11        SUBPARTITION SP2 VALUES ( 3 )
 12        )
 13   (
 14      partition p1 values less than (1)
 15   );

Table created

SQL> explain plan for
  2    select * from MY_TABLE t
  3    where t.part_id = 2
  4    and t.subpart_id = 2;

Explained

SQL> select *
  2    from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 67206436
--------------------------------------------------------------------------------
| Id  | Operation              | Name     | Rows  | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT       |          |     1 |    39 |    29   (0)| 00:00:0
|   1 |  PARTITION RANGE SINGLE|          |     1 |    39 |    29   (0)| 00:00:0
|   2 |   PARTITION LIST SINGLE|          |     1 |    39 |    29   (0)| 00:00:0
|*  3 |    TABLE ACCESS FULL   | MY_TABLE |     1 |    39 |    29   (0)| 00:00:0
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   3 - filter("T"."PART_ID"=2 AND "T"."SUBPART_ID"=2)
Note
-----
   - dynamic statistics used: dynamic sampling (level=2)
   
SQL> explain plan for
  2    select * from MY_TABLE t
  3    where t.part_id = 2
  4    and t.subpart_id = 3;
  
Explained

SQL> select *
  2    from table(dbms_xplan.display);
  
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 67206436
--------------------------------------------------------------------------------
| Id  | Operation              | Name     | Rows  | Bytes | Cost (%CPU)| Time
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT       |          |     1 |    39 |    29   (0)| 00:00:0
|   1 |  PARTITION RANGE SINGLE|          |     1 |    39 |    29   (0)| 00:00:0
|   2 |   PARTITION LIST SINGLE|          |     1 |    39 |    29   (0)| 00:00:0
|*  3 |    TABLE ACCESS FULL   | MY_TABLE |     1 |    39 |    29   (0)| 00:00:0
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   3 - filter("T"."PART_ID"=2)
Note
-----
   - dynamic statistics used: dynamic sampling (level=2)
...
Рейтинг: 0 / 0
Partition pruning
    #39306541
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
partitionСоздал таблицу
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE TABLE my_table
(  
  id number not null enable, 
  part_id   NUMBER NOT NULL ENABLE, 
  subpart_id NUMBER NOT NULL ENABLE
)
PARTITION BY RANGE (part_id) INTERVAL (1) 
 SUBPARTITION BY LIST (subpart_id) 
 SUBPARTITION TEMPLATE ( 
    SUBPARTITION SP1 VALUES ( 1 ), 
    SUBPARTITION SP2 VALUES ( 2 )
    )
(   
  partition p1 values less than (1)
);


Заполнил данными, выполнил запрос
Код: plsql
1.
2.
3.
select * from MY_TABLE t 
where t.part_id = 2 
and t.subpart_id = 2


План запроса:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
------------------------------------------------------------------------------
| Id  | Operation                | Name     | Rows | Bytes | Cost | Time     |
------------------------------------------------------------------------------
|   0 | SELECT STATEMENT         |          |    1 |    39 |   14 | 00:00:01 |
|   1 |   PARTITION RANGE SINGLE |          |    1 |    39 |   14 | 00:00:01 |
|   2 |    PARTITION LIST SINGLE |          |    1 |    39 |   14 | 00:00:01 |
| * 3 |     TABLE ACCESS FULL    | MY_TABLE |    1 |    39 |   14 | 00:00:01 |
------------------------------------------------------------------------------

Predicate Information (identified by operation id):
------------------------------------------
* 3 - filter("T"."PART_ID"=2)


У меня вопрос действительно ли Oracle фильтрует данные в subpartition или filter("T"."PART_ID"=2) просто принять к сведению?2.5, например
...
Рейтинг: 0 / 0
Partition pruning
    #39306543
ORA__SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
partitionА что значит PARTITION COMBINED ITERATOR ?
Google? http://oracle-randolf.blogspot.ru/2007/03/subpartitions-and-optimizer-statistics.html
...
Рейтинг: 0 / 0
Partition pruning
    #39306546
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
partitionА что значит PARTITION COMBINED ITERATOR ?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select * from MY_TABLE subpartition(SYS_SUBP438440) t

----------------------------------------------------------------------------------
| Id | Operation                     | Name     | Rows | Bytes | Cost | Time     |
----------------------------------------------------------------------------------
|  0 | SELECT STATEMENT              |          |    1 |    39 |   14 | 00:00:01 |
|  1 |   PARTITION COMBINED ITERATOR |          |    1 |    39 |   14 | 00:00:01 |
|  2 |    TABLE ACCESS FULL          | MY_TABLE |    1 |    39 |   14 | 00:00:01 |
----------------------------------------------------------------------------------

То же самое что и
Код: plaintext
select * from my_table subpartition for (<part_id>, <subpart_id>)
Чтение одного конкретного сегмента.
...
Рейтинг: 0 / 0
Partition pruning
    #39306553
partition
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров, не понял Ваш комментарий
...
Рейтинг: 0 / 0
Partition pruning
    #39306559
partition
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ORA__SQL - спасибо за Ваш пример
...
Рейтинг: 0 / 0
Partition pruning
    #39306562
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
partitionВячеслав Любомудров, не понял Ваш комментарийПодумай, какие еще значения могут храниться с этой подсекции
...
Рейтинг: 0 / 0
Partition pruning
    #39306573
partition
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ORA__SQL, Вячеслав Любомудров , dbms_photoshop - спасибо за комментарии, картинка сложилась )
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Partition pruning
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]