我有一张表格如下:
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;
现在,我想在x
和y
值之间为z
,max
和min
的每个组合添加一行。我怎么能这样做?
在java中,我会遍历x
和xmin
之间的xmax
的每个值,y
和ymin
之间的ymax
,{{ 1}}在z
和zmin
之间,然后发送带有这些值的查询以及zmax
和uuid
,但对于10k查询,它会占用大量资源。
有没有办法让MySQL服务器在内部执行此操作?
PS:我在插入行时使用name
语法以避免重复。
编辑: 这是java的替代选择:
REPLACE INTO
我想使用mysql服务器进行循环,而不是在java中进行循环以节省i / o时间。
答案 0 :(得分:2)
这是你想要的吗?
insert into mytable(name, uuid, . . .)
select name, uuid, . . .
from mytable
where x between $xmin and $xmax and
y between $ymin and $ymax;
如果是这样的话,那么你只需要一个查询,只需要合适的条件。