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;
но это не принесло существенного улучшения производительности.
Я также выполнил этот поиск в таблице без индекса, но снова без различий для приведенной выше таблицы полигонов. Для таблицы с меньшим индексированным полигоном запрос выполняется быстрее.
Можно ли сделать что-нибудь еще, чтобы улучшить производительность? Я знаю, что географический поиск сложен, но индексирование должно улучшить скорость поиска.