сущности следующая:
Есть две таблицы :
Таблица А с колонкой geom (Polygon) + колонка id- 1kk записей
Таблица B с колонкой geom (Point) - 100к записей
Необходимо найти все записи из таблицы А, внутри полигонов которых, содержаться записи таблицы B.
На данный момент использую следующую конструкцию:
Select * from A join B on ST_Intersects(A.geom, B.geom) where id =uuid
На обоих колонках есть пространственный индекс, но используется только индекс таблицы B и индекс на id. loop cost составляет примерно 80к. А время выполнения порядка 90ms.
Можно ли это ещё как-то оптимизировать?
может проще ST_INTERSECTS, если не нужна геометрия пересечения?
Добавить в таблицу B колонку owning_geometry_id, ссылающуюся на таблицу А
А каким образом я ее буду заполнять? Таблица B временная (несколько минут) и нужна только для поиска необходимых данных в таблице А. (К одной записи таблицы В может быть несколько записей таблицы А)
Обсуждают сегодня