我正在用LINESTRING()将路线的GPS坐标存储在一行中。当我想使用这些数据时,我需要使用其他功能,即X()Y()ASTEXT()GEOMFROMTEXT()等。

我当时在想,如果最好再准备一张表,将一个GPS坐标存储在一行中。因此,对于每个路由,该表中将有N行。

我的问题是,对于每条路线在一行中用LINESTRING()存储路线的GPS坐标会更快还是更好,您有何看法?

最佳答案

如果我是您,我肯定会创建一个新表,每行一对纬度/经度。这是经典的规范化数据库格式。

确保包括一列,以使您可以按正确的顺序放置每个路线的点。例如,

 route_id int   (fk to route table)
 point_seq int   (counts the points in the route 0,1,2, etc)
 lat float
 lon float


在此设计建议中,表的主键是(route_id, point_seq)的组合

您可能需要创建复合索引(lat, lon, route_id, point_seq)以允许efficient coverage位置查询。

LINESTRING和朋友是OpenGIS extension to MySQL的一部分。有一些使用该扩展名的制图系统。但是,(目前)它的主要缺点是无法使用复合空间/非空间索引。这减慢了许多空间查询的速度。

关于mysql - SQL LINESTRING()与多行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30733092/

10-12 15:06