需要更新点并将它们向西移动

Need to update points and shift them west

我有一个 MySQL 空间 table 有数百万个点。其中一些点偏离了某个恒定的小数度数。我可以这样 select 有问题的点。

SELECT AsText(Point) as point FROM records WHERE ST_CONTAINS(GeomFromText(?), point);

我的 GeomFromText 是一个包含我要移动的点的多边形。将大量点向西移动大约 1 度的最佳方法是什么?我的第一个想法是遍历我的结果集并单独更新每个点,但是当我进入数百万行区域时我担心性能。

有没有更好的方法来完成大量地理空间点的移动?

顺便说一句,我目前正在通过 Nashorn/Java 访问数据库,但我也可以在数据库终端上运行一些东西。

您可以使用批量更新,而不是一个接一个地发送更新。刚刚批量发送更新查询例如

statement.addBatch("your update query1");
statement.addBatch("your update query2);
int[] recordsAffected = statement.executeBatch();

您还可以使用 PreparedStatement(表示预编译的 SQL 语句的对象。)执行批量更新,这使您可以重复使用具有不同参数的相同 sql 语句。

您还可以创建存储过程并从 java 调用它。