J'ai une base de données MySQL. - Je stocker des maisons dans la base de données et effectuer littéralement juste 1 de la requête sur la base de données, mais j'ai besoin de cette requête pour être effectuée super rapide, et c'est de retourner toutes les maisons à l'intérieur d'une boîte carrée geo de latitude et de longitude.
SELECT * FROM homes
WHERE geolat BETWEEN ??? AND ???
AND geolng BETWEEN ??? AND ???
Comment est la meilleure façon pour moi de stocker mes données géographiques afin que je puisse effectuer cette requête d'affichage de la maison à l'intérieur de la géolocalisation zone la plus rapide?
En gros:
- Suis-je à l'aide de la meilleure instruction SQL à exécuter cette requête la plus rapide?
- Toute autre méthode existe, peut-être même pas à l'aide d'une base de données, pour moi, à la requête de la façon la plus rapide à la suite de maisons à l'intérieur d'une boîte de géolocalisation limites?
Dans le cas où cela peut aider, j'ai ma table de base de données le schéma ci-dessous:
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 ;
Mise à JOUR
Je comprends spatiale prendra en compte la courbure de la terre, mais je suis plus intéressé par le retour de données geo le plus RAPIDE. À moins que ces spatiale de la base de données des paquets en quelque sorte le retour des données plus rapidement, s'il vous plaît ne pas recommander spatiale des extensions. Merci
Mise à JOUR 2
Veuillez noter, pas de un ci-dessous a vraiment répondu à la question. Je suis vraiment impatient de toute l'aide que je pourrais recevoir. Merci à l'avance.