Что эквивалентно ST_DWithin (PostGIS - PostgreSQL) для MySQL? - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь найти эффективный способ выполнять запросы о близости, то есть возвращать ТОЧКИ, которые находятся в радиусе от центральной ТОЧКИ.

Я понимаю, что метод PostGIS ST_DWithin являетсяхороший способ сделать это в PostgreSQL и что он использует INDEX .

В настоящее время я использую ST_Distance_Sphere (g1, g2 [, radius]) , который возвращает минимальное сферическое расстояние между точкой на сфере в метрах.

SELECT placeNames FROM myPlaces
WHERE ST_Distance_Sphere(placeLocation, POINT(28.861105, 77.337)) < 10000

Я использую предложение WHERE для фильтрации строк.Использует ли запрос индекс?Если нет, то есть ли лучший подход для реализации того же.

Я использую MySQL 5.7.26 и 8.0.16, оба работают под управлением ядра базы данных InnoDB по умолчанию.

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

На данный момент в MySQL, похоже, нет «более эффективной» альтернативы ST_Distance_Sphere или любой другой, которая использует пространственный индекс.

0 голосов
/ 28 мая 2019

Firtly SRID задать этот запрос 4326 использовать его;образец

SELECT ST_SetSRID (ST_MakePoint (-71.1043443253471, 42.3150676015829), 4326);

...