@@ -131,6 +131,28 @@ SELECT create_hash_partitions('hash_rel', 'value', 100);
131
131
```
132
132
SELECT partition_data('hash_rel');
133
133
```
134
+ Пример построения плана для запроса с фильтрацией по ключевому полю:
135
+ ```
136
+ SELECT * FROM hash_rel WHERE value = 1234;
137
+ id | value
138
+ ------+-------
139
+ 1234 | 1234
140
+
141
+ EXPLAIN SELECT * FROM hash_rel WHERE value = 1234;
142
+ QUERY PLAN
143
+ -----------------------------------------------------------------
144
+ Append (cost=0.00..2.00 rows=0 width=0)
145
+ -> Seq Scan on hash_rel_34 (cost=0.00..2.00 rows=0 width=0)
146
+ Filter: (value = 1234)
147
+ ```
148
+ Стоит отметить, что pg_pathman исключает из плана запроса родительскую таблицу, и чтобы получить данные из нее, следует использовать модификатор ONLY:
149
+ ```
150
+ EXPLAIN SELECT * FROM ONLY hash_rel;
151
+ QUERY PLAN
152
+ --------------------------------------------------------
153
+ Seq Scan on hash_rel (cost=0.00..0.00 rows=1 width=8)
154
+ ```
155
+
134
156
### RANGE
135
157
Пример секционирования таблицы с использованием стратегии RANGE.
136
158
```
@@ -159,12 +181,30 @@ SELECT split_range_partition('range_rel_1', '2010-02-15'::date);
159
181
```
160
182
Добавим новую секцию в конец списка секций:
161
183
```
162
- SELECT append_partition('range_rel')
184
+ SELECT append_partition('range_rel');
185
+ ```
186
+ Пример построения плана для запроса с фильтрацией по ключевому полю:
163
187
```
188
+ SELECT * FROM range_rel WHERE dt >= '2012-04-30' AND dt <= '2012-05-01';
189
+ id | dt
190
+ -----+---------------------
191
+ 851 | 2012-04-30 00:00:00
192
+ 852 | 2012-05-01 00:00:00
193
+
194
+ EXPLAIN SELECT * FROM range_rel WHERE dt >= '2012-04-30' AND dt <= '2012-05-01';
195
+ QUERY PLAN
196
+ ----------------------------------------------------------------------------
197
+ Append (cost=0.00..60.80 rows=0 width=0)
198
+ -> Seq Scan on range_rel_28 (cost=0.00..30.40 rows=0 width=0)
199
+ Filter: (dt >= '2012-04-30 00:00:00'::timestamp without time zone)
200
+ -> Seq Scan on range_rel_29 (cost=0.00..30.40 rows=0 width=0)
201
+ Filter: (dt <= '2012-05-01 00:00:00'::timestamp without time zone)
202
+ ```
203
+
164
204
### Деакцивация pathman
165
- Деактивировать pathman для некоторой ранее разделенной таблицы можно следующей командой disable_pathman ():
205
+ Деактивировать pathman для некоторой ранее разделенной таблицы можно следующей командой disable_partitioning ():
166
206
```
167
- SELECT disable_pathman ('range_rel');
207
+ SELECT disable_partitioning ('range_rel');
168
208
```
169
209
Все созданные секции и данные останутся по прежнему доступны и будут обрабатываться стандартным планировщиком PostgreSQL.
170
210
### Ручное управление секциями
0 commit comments