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

标签 java mysql spatial nashorn

我有一个包含数百万个点的 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/

相关文章:

java - 未接收 ApplicationEnvironmentPreparedEvent

java - 了解正则表达式中的 `+`

r - 在 R 中,如何将 SpatialPolygons* 转换为映射对象

r - 创建空间点数据框

postgresql - 如何将线串的起点和终点顶点对齐到最近的点?

java - 无法使用 ArrayList 中对象的方法

java - 检索对象期间运行时异常

MySQL:将表字段连接到相关结果集

sql - 在 MySQL 中,连接谓词之间具有多对多关系的大型表的最有效查询设计是什么?

mysql - 如何以最小的冗余映射附加图像(例如 sqlite 表中的数据)?