我正在用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/