Postgis - ST_D снова в исполнении

У меня есть пример таблицы global_points из 5 миллионов записей со случайными географическими точками.

Я создал индекс с CREATE INDEX global_points_gix ON public.global_points USING gist (location);

Я выполнил поиск географии (не геометрии) по многоугольнику:

SELECT count(*) from global_points 
WHERE ST_DWithin(location, 'SRID=4326; POLYGON((0 0, 50 0, 50 50, 0 0))', 0);

Выполнение этого запроса на моем компьютере занимает ~30 секунд (жесткий диск, 2 ядра, 2, 8 ГГц, 8 ГБ ОЗУ).

Я попробовал несколько хитростей (например, поместил определение многоугольника в отдельную таблицу:

SELECT  count(*)
FROM global_points a , polygons b
WHERE ST_DWithin(b.location,a.location ,5e-05) and b.id=2;

но это не принесло существенного улучшения производительности.

Я также выполнил этот поиск в таблице без индекса, но снова без различий для приведенной выше таблицы полигонов. Для таблицы с меньшим индексированным полигоном запрос выполняется быстрее.

Можно ли сделать что-нибудь еще, чтобы улучшить производительность? Я знаю, что географический поиск сложен, но индексирование должно улучшить скорость поиска.

0 ответов

Другие вопросы по тегам