【发布时间】:2016-09-23 09:32:47
【问题描述】:
我在 MySQL 中有很多图片的信息存储,大部分图片都有地理位置信息,但其他的没有。
由于 MySQL 地理空间索引不允许空几何点,我必须在表中插入一些无意义的点,例如 POINT(1000 1000)。
如果所有没有地理位置信息的图片都设置为 POINT(1000 1000) 会有什么问题吗?
或者有没有更好的方法来满足这个需求?
【问题讨论】:
标签: mysql geolocation mysql-5.7
我在 MySQL 中有很多图片的信息存储,大部分图片都有地理位置信息,但其他的没有。
由于 MySQL 地理空间索引不允许空几何点,我必须在表中插入一些无意义的点,例如 POINT(1000 1000)。
如果所有没有地理位置信息的图片都设置为 POINT(1000 1000) 会有什么问题吗?
或者有没有更好的方法来满足这个需求?
【问题讨论】:
标签: mysql geolocation mysql-5.7
在这种情况下不需要地理空间索引。更快更简单的方法是使用 KEY (lon, lat) 和 SELECT * FROM the_table WHERE lon > a and lon c and lat
【讨论】:
POINT 或 GEOMETRY 在 MySQL 中可以为空(使用 InnoDB 或 MyISAM 存储引擎)但是,当您创建表时,必须将列声明为非空。
只需这样做:
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;
【讨论】: