【问题标题】:MySQL 5.7 Geospatial Index, will points concentrate in one point cause performance matterMySQL 5.7 地理空间索引,将点集中在一点导致性能问题
【发布时间】:2016-09-23 09:32:47
【问题描述】:

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

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

如果所有没有地理位置信息的图片都设置为 POINT(1000 1000) 会有什么问题吗?

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

【问题讨论】:

    标签: mysql geolocation mysql-5.7


    【解决方案1】:

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

    【讨论】:

    • 如果唯一需要的功能是查找边界区域的图像,那么您是对的。但是地理空间类型和函数提供了诸如距离计算和在多边形内查找点的能力。
    【解决方案2】:

    POINTGEOMETRY 在 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;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-21
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      相关资源
      最近更新 更多