java在MySQL表中插入多行
我有一张桌子如下:
CREATE TABLE IF NOT EXISTS mytable (
`id` INT(22) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`uuid` VARCHAR(255) NOT NULL,
`x` INT(11) NOT NULL,
`y` INT(11) NOT NULL,
`z` INT(11) NOT NULL,
`time` BIGINT NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY idx_table_x_y_z ( x, y, z )
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
现在,我想在max
和min
值之间为x
、y
和z
的每个组合添加一行。我该怎么做
在java中,我会循环遍历xmin
和xmax
之间的x
,y
和ymin
和ymax
,zmin
和zmax
之间的z
,然后用这些值和uuid
和name
发送一个查询,但对于10k查询,这会占用大量资源
有没有办法让MySQL服务器在内部执行此操作
PS:我在插入行时使用REPLACE INTO
语法以避免重复
编辑: 这正是java的替代方案:
for(int x = xMin; x < xMax; x++) {
for(int y = yMin; x < yMax; y++) {
for(int z = zMin; x < zMax; z++) {
try {
SH.getManager().getMysqlManager().query(
"REPLACE INTO blocks_" + type.name + "_" + b.getWorld().getName() + "("
+ "name, uuid, x, y, z, time) "
+ "VALUES ( "
+ "'" + name + "', '" + uuid + "', " + x + ", " + y + ", " + z + ", " + System.currentTimeMillis() + " "
+ ");");
} catch (final SQLException e) {
e.printStackTrace();
}
}
}
}
为了节省I/o时间,我想使用mysql服务器而不是java来进行循环
共 (0) 个答案