Чтобы получить tbl2
геометрию, которая находится в пределах 1000
метров от tbl1
геометрии центроида, вы можете опустить создание буфера и рассчитывать расстояние напрямую, используя ST_DWithin
select tbl2.geometry_id
from geometryTable tbl1
join geometryTable tbl2
on ST_DWithin(ST_centroid(tbl1.geometry)::geography, tbl2.geometry::geography,1000, true)
where tbl1.geometry_id = '112233';
Если этого недостаточно, вы можете создать пространственный индекс для географии центроидов
CREATE tl1_centroid_geog ON tbl1 USING GIST(geography(ST_centroid(geometry)));
и, в конечном итоге, для географии tbl2
CREATE tl2_geog ON tbl2 USING GIST(geography(geometry));