Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Partition pruning / 12 сообщений из 12, страница 1 из 1
09.09.2016, 12:27:53
    #39306513
partition
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Partition pruning
Создал таблицу
Код: 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
09.09.2016, 12:30:44
    #39306517
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Partition pruning
partition,

Внимательнее посмотреть на строки плана с ID 1 и 2.
...
Рейтинг: 0 / 0
09.09.2016, 12:45:26
    #39306529
partition
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Partition pruning
ID1 и ID2 говорит, что ORACLE сканирует конкретную сабпартицию, тогда зачем фильтр?
...
Рейтинг: 0 / 0
09.09.2016, 12:47:27
    #39306532
partition
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Partition pruning
А что значит 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
09.09.2016, 12:52:00
    #39306537
ORA__SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Partition pruning
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
09.09.2016, 12:56:45
    #39306541
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Partition pruning
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
09.09.2016, 12:56:53
    #39306543
ORA__SQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Partition pruning
partitionА что значит PARTITION COMBINED ITERATOR ?
Google? http://oracle-randolf.blogspot.ru/2007/03/subpartitions-and-optimizer-statistics.html
...
Рейтинг: 0 / 0
09.09.2016, 12:59:53
    #39306546
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Partition pruning
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
09.09.2016, 13:07:46
    #39306553
partition
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Partition pruning
Вячеслав Любомудров, не понял Ваш комментарий
...
Рейтинг: 0 / 0
09.09.2016, 13:13:11
    #39306559
partition
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Partition pruning
ORA__SQL - спасибо за Ваш пример
...
Рейтинг: 0 / 0
09.09.2016, 13:15:29
    #39306562
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Partition pruning
partitionВячеслав Любомудров, не понял Ваш комментарийПодумай, какие еще значения могут храниться с этой подсекции
...
Рейтинг: 0 / 0
09.09.2016, 13:25:32
    #39306573
partition
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Partition pruning
ORA__SQL, Вячеслав Любомудров , dbms_photoshop - спасибо за комментарии, картинка сложилась )
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Partition pruning / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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