MySQL 5.7地理空间索引,将积分集中在一点导致性能问题

时间:2016-09-23 09:32:47

标签: mysql geolocation mysql-5.7

我在MySQL中有很多图像的信息存储,大部分图像都有地理位置信息,但其他图像没有。

由于MySQL地理空间索引不允许空几何点,我必须在表中插入一些无意义的点,如POINT(1000 1000)。

如果所有没有地理位置信息的图像都设置为POINT(1000 1000)会导致任何问题吗?

或者有没有更好的方法来满足这种需求?

2 个答案:

答案 0 :(得分:0)

在这种情况下不需要地理空间索引。更快更简单的方法是使用KEY(lon,lat)和SELECT * FROM the_table WHERE lon> a和lon< b和lat> c和lat< d;

答案 1 :(得分:0)

MySQL中的

POINTGEOMETRY可以为null(使用InnoDB或MyISAM存储引擎)但是,在创建表时,必须将列声明为非null。

只需这样做:

CREATE TABLE images(filename TEXT, location POINT NOT NULL); INSERT INTO images(filename, location) VALUES ('hello.png', NULL); SELECT count(*) FROM images WHERE location IS NULL;