Что эквивалентно ST_DWithin (PostGIS - PostgreSQL) для MySQL?

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

Я понимаю, что метод PostGIS ST_DВ пределах является хорошим способом сделать это в PostgreSQL и что это использует ИНДЕКС.

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

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

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

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

Используйте EXPLAIN, чтобы проверить, как выполняется запрос: dev.mysql.com/doc/refman/5.7/en/using-spatial-indexes.html

LuisTavares 28.05.2019 12:44
# id, select_type, table, partitions, type, possible_keys, key, key_len, ref, rows, filtered, Extra `` '1', 'SIMPLE', 'myStoreLocations', NULL, 'ALL', NULL, NULL, NULL, NULL, '2', '100.00', 'Using where'
Sebin Benjamin 28.05.2019 14:26

Я не думаю, что здесь используется пространственный индекс

Sebin Benjamin 28.05.2019 14:27

Я согласен. При условии, что время выполнения не будет "неприличным", я бы не стал больше думать об этом вопросе.

LuisTavares 29.05.2019 03:31
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
4
753
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

ВЫБЕРИТЕ ST_SetSRID (ST_MakePoint (-71.1043443253471, 42.3150676015829), 4326);

Ответ принят как подходящий

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

Другие вопросы по теме