У меня есть база данных MySQL. Я храню дома в базе данных и выполняю буквально всего 1 запрос к базе данных, , но мне нужно, чтобы этот запрос выполнялся очень быстро , и это возвращает все дома в квадрате широта и долгота.
SELECT * FROM homes
WHERE geolat BETWEEN ??? AND ???
AND geolng BETWEEN ??? AND ???
Как мне лучше всего сохранить свои геоданные, чтобы я мог выполнить этот запрос, чтобы быстрее отобразить все дома в окне геолокации?
В основном:
- Использую ли я лучший оператор SQL для выполнения этого запроса быстрее всего?
- Существует ли какой-либо другой метод, может быть, даже не использующий базу данных, чтобы я мог быстрее всего запросить результат поиска домов в пределах границ геолокации в штучной упаковке?
На случай, если это поможет, я включу следующую схему таблицы базы данных:
CREATE TABLE IF NOT EXISTS `homes` (
`home_id` int(10) unsigned NOT NULL auto_increment,
`address` varchar(128) collate utf8_unicode_ci NOT NULL,
`city` varchar(64) collate utf8_unicode_ci NOT NULL,
`state` varchar(2) collate utf8_unicode_ci NOT NULL,
`zip` mediumint(8) unsigned NOT NULL,
`price` mediumint(8) unsigned NOT NULL,
`sqft` smallint(5) unsigned NOT NULL,
`year_built` smallint(5) unsigned NOT NULL,
`geolat` decimal(10,6) default NULL,
`geolng` decimal(10,6) default NULL,
PRIMARY KEY (`home_id`),
KEY `geolat` (`geolat`),
KEY `geolng` (`geolng`),
) ENGINE=InnoDB ;
UPDATE
Я понимаю, что пространственная воля будет влиять на кривизну Земли, но меня больше всего интересует возвращение геоданных как можно быстрее. Если эти пакеты пространственной базы данных не возвращают данные быстрее, не советуйте пространственные расширения. Спасибо
ОБНОВЛЕНИЕ 2
Пожалуйста, обратите внимание, что никто из нижеприведенных действительно не ответил на вопрос. Я действительно с нетерпением жду любой помощи, которую я мог бы получить. Заранее спасибо.