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