我有一个MySQL数据库。我在数据库中存储家庭,字面上只对数据库执行一次查询,但我需要这个查询执行超快,这是返回方框内的所有家庭地理纬度&经度。
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 ;
更新
我理解空间将在地球的曲率因素,但我最感兴趣的返回地理数据的FASTEST。除非这些空间数据库包以某种方式更快地返回数据,否则请不要推荐空间扩展。谢谢
更新2
请注意,以下没有人真正回答了这个问题。我真的期待我可能收到的任何帮助。提前致谢。