我有一个MySQL表(约有~100,000个条目),如下所示:
CREATE TABLE IF NOT EXISTS `poi` (
`poi_id` int(10) unsigned NOT NULL auto_increment,
`lat` decimal(10,6) default NULL,
`lng` decimal(10,6) default NULL,
PRIMARY KEY (`poi_id`),
KEY `lat` (`lat`),
KEY `lng` (`lng`),
) ENGINE=InnoDB;
基本上我想对这些条目做的就是获取给定边界框(bbox)中的所有POI。
实现这一目标会有什么好处(快速但不太复杂)?
如果能带来任何好处,那么更改数据库架构(甚至DBMS)是我的选择。我怀疑我的天真模式是一种快速的方法。
BTW:我已经读过有关PostGIS的文章,但我并不是那么复杂。所以我宁愿坚持一个简单而干净的解决方案。答案 0 :(得分:0)
尝试这样的事情:
SELECT *
FROM poi
WHERE lat >= @lat - @degrees
AND lat <= @lat + @degrees
AND lng >= @lng - @degrees
AND lng <= @lng + @degrees
当然,您也可以传递lat和lng的上下参数,这可能更有效