Baza danych: najlepszy sposób na zapytanie o dane lokalizacji geograficznej?
Mam bazę danych MySQL. Przechowuję domy w bazie danych i wykonuję dosłownie tylko jedno zapytanie do bazy danych,ale muszę wykonać to zapytanie bardzo szybkoi to jest, aby zwrócić wszystkie domy w kwadratowym polu geo szerokości i długości geograficznej.
SELECT * FROM homes
WHERE geolat BETWEEN ??? AND ???
AND geolng BETWEEN ??? AND ???
Jak najlepiej przechowywać moje dane geograficzne, aby jak najszybciej wykonać zapytanie o wyświetlenie całego domu w polu geolokalizacji?
Gruntownie:
Czy używam najlepszej instrukcji SQL, aby wykonać to zapytanie najszybciej?Czy istnieje jakakolwiek inna metoda, może nawet nie korzystająca z bazy danych, abym mógł zapytać o najszybszy sposób, w jaki sposób domy w ramach pudełkowych granic geolokalizacji?W przypadku, gdy to pomoże, zamieszczam poniższy schemat tabeli bazy danych:
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 ;
AKTUALIZACJA
Rozumiem, że przestrzenne będą wpływać na krzywiznę ziemi, ale najbardziej interesuje mnie zwrócenie NAJSZYBSZYCH danych geograficznych. Jeśli te przestrzenne pakiety baz danych nie przywrócą w jakiś sposób danych, nie zalecamy rozszerzeń przestrzennych. Dzięki
AKTUALIZACJA 2
Uwaga: nikt poniżej nie odpowiedział na pytanie. Naprawdę nie mogę się doczekać jakiejkolwiek pomocy, jaką mogę otrzymać. Z góry dziękuję.