У меня есть две таблицы с одним столбцом GEOGRAPHY, в котором есть строка WRT для Polygon.Запрос по одной таблице работает хорошо, по другим возвращает все строки вместо одной.
Таблица с POLYGON в столбце GEOGRAPHY.Когда запрашивается ST_CONTAINS и одиночная точка возвращает ВСЕ строки вместо одной.Если я преобразую содержимое поля в строку, а затем вернусь в GEO, это будет работать, но ОЧЕНЬ МЕДЛЕННО.У меня есть другая похожая таблица, где она работает очень быстро для большего количества записей.
Запрос, который возвращает все записи:
SELECT count(1) FROM pur.sections WHERE ST_CONTAINS((POLYGON), ST_GEOGPOINT(-121.253763, 38.354874))
Запрос, который работает, но медленно - 23 секунды!:
SELECT polygon FROM pur.sections WHERE ST_CONTAINS(ST_GEOGFROMTEXT(ST_ASTEXT(POLYGON)), ST_GEOGPOINT(-121.253763, 38.354874))
Возвращает:
[
{
"polygon": "POLYGON((-121.241934066695 38.3649672043987, -121.241834795711 38.350891363934, -121.260351761597 38.3508607773966, -121.260367162138 38.3649633106378, -121.241934066695 38.3649672043987))"
}
]
Таблица содержит 164 тыс. Строк.
Первый запрос, который очень быстро возвращает одну строку.