Объяснение
У меня есть 2 таблицы в PostgreSQL с использованием расширения PostGIS.Обе таблицы представляют улицы как линии линий из провинции.

streetsA
Таблица (оранжевые линии) имеет размер таблицы 96 МБ (471026 строк), вторая таблица streetsB
(зеленые линии) имеет размер 78 МБ (139708 строк).Улицы немного различаются по своему расположению, поэтому я применил функцию ST_Snap
для сопоставления улиц B с улицами A.
create table snapped as select ST_snap(a.geom, b.geom, ST_Distance(a.geom, b.geom)*0.5) from streetsA as a, streetsB as b;
Однако из-за большого размера таблиц запрос занимает более 5часов до завершения.Я ничего не менял в настройках postgres.Это хорошая идея, чтобы выполнить запрос для такого большого набора данных?Имеет ли пространственный индекс смысл для этого запроса?Я использую 16 ГБ ОЗУ с ноутбуком с Core i7.
Метод EXPLAIN
дает мне следующий вывод:
Nested Loop (cost=0.00..5264516749.25 rows=65806100408 width=32)
Seq Scan on streetsa a (cost=0.00..16938.26 rows=471026 width=153)
Materialize (cost=0.00..12127.62 rows=139708 width=206)
Seq Scan on streets b (cost=0.00..11429.08 rows=139708