我有一个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)对我来说是一个选项,如果这样做有任何好处的话。我怀疑我的天真模式是否是一种快速的方法。
顺便说一句:我已经读过关于PostGIS的文章了,但我并不是很复杂。所以我宁愿坚持一个简单而干净的解决方案。
发布于 2016-06-11 13:24:18
试着做这样的事情:
SELECT *
FROM poi
WHERE lat >= @lat - @degrees
AND lat <= @lat + @degrees
AND lng >= @lng - @degrees
AND lng <= @lng + @degrees当然,您也可以传递lat和lng的上下参数,这些参数可能更有效。
https://stackoverflow.com/questions/37764102
复制相似问题