我有一个包含数百万个点的 MySQL 空间表。其中一些点偏离了某个恒定的小数度数。我可以像这样选择有问题的点。
SELECT AsText(Point) as point FROM records WHERE ST_CONTAINS(GeomFromText(?), point);
我的 GeomFromText 是一个包含我要移动的点的多边形。将大量点向西移动大约 1 度的最佳方法是什么?我的第一个想法是遍历我的结果集并单独更新每个点,但是当我进入数百万行区域时我担心性能。
有没有更好的方法来完成大量地理空间点的移动?
顺便说一句,我目前正在通过 Nashorn/Java 访问数据库,但我也可以在数据库终端上运行一些东西。
最佳答案
您可以使用批量更新,而不是一个一个地发送更新。刚刚批量发送更新查询 E.g.
statement.addBatch("your update query1");
statement.addBatch("your update query2);
int[] recordsAffected = statement.executeBatch();
您还可以使用 PreparedStatement (表示预编译 SQL 语句的对象。)执行批量更新,这使您能够重用具有不同参数的相同 SQL 语句。
您还可以创建一个存储过程并从 java 中调用它。
关于java - 需要更新点并将它们向西移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27770976/