У меня есть база данных 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
Я понимаю, что пространственный фактор будет влиять на кривизну Земли, но меня больше всего интересует возвращение геоинформационных данных FASTEST. Если эти пакеты пространственных баз данных как-то быстрее не возвращают данные, не рекомендуется использовать пространственные расширения. Благодаря
ОБНОВЛЕНИЕ 2
Обратите внимание: никто не ответил на вопрос. Я очень надеюсь на любую помощь, которую я могу получить. Спасибо заранее.