Индекс Postgis GIST - без увеличения производительности - PullRequest
0 голосов
/ 06 июня 2018

У меня есть база данных Postgres 9.5 с установленным Postgis.Я создал материализованное представление из 200 таблиц.Весь вид содержит 3447885 записей.Каждая запись имеет поле местоположения типа геометрии.Когда я запрашиваю все записи, где местоположение - ST_ в ограничивающей рамке, для возврата 126 630 строк требуется 15,1 секунды.

Я построил индекс GIST на поле и запустил запрос, и все еще требуется 15,1 для возврата 126 630 строк.

Пример запроса:

SELECT ST_AsText (location) 
FROM myview 
WHERE ST_Within (location, ST_Geometry (....

Должен ли я бытьВидите значительное увеличение производительности на материализованном представлении такого размера?Могу ли я найти источник проблем с производительностью?

Создать индекс:

create index myview_location_gist on myview using gist (location);

Объяснить, проанализировать:

'Bitmap Heap Scan on myview  (cost=130.56..11653.11 rows=1149 width=40) (actual time=18.377..564.760 rows=126330 loops=1)'
'  Recheck Cond: ('0103000020110F00000100000005000000D151D81DE90461C1831E458318835241D151D81DE90461C1D7A37045F81B53415C8FC23C79B860C1D7A37045F81B53415C8FC23C79B860C1831E458318835241D151D81DE90461C1831E458318835241'::geometry ~ location)'
'  Filter: _st_contains('0103000020110F00000100000005000000D151D81DE90461C1831E458318835241D151D81DE90461C1D7A37045F81B53415C8FC23C79B860C1D7A37045F81B53415C8FC23C79B860C1831E458318835241D151D81DE90461C1831E458318835241'::geometry, location)'
'  Rows Removed by Filter: 3'
'  Heap Blocks: exact=17361'
'  ->  Bitmap Index Scan on myview_location_gist  (cost=0.00..130.28 rows=3448 width=0) (actual time=15.923..15.923 rows=126333 loops=1)'
'        Index Cond: ('0103000020110F00000100000005000000D151D81DE90461C1831E458318835241D151D81DE90461C1D7A37045F81B53415C8FC23C79B860C1D7A37045F81B53415C8FC23C79B860C1831E458318835241D151D81DE90461C1831E458318835241'::geometry ~ location)'
'Planning time: 0.080 ms'
'Execution time: 570.068 ms'
...