在MySQL表中插入多行

时间:2015-06-15 18:57:23

标签: java mysql sql performance

我有一张表格如下:

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;

现在,我想在xy值之间为zmaxmin的每个组合添加一行。我怎么能这样做?

在java中,我会遍历xxmin之间的xmax的每个值,yymin之间的ymax,{{ 1}}在zzmin之间,然后发送带有这些值的查询以及zmaxuuid,但对于10k查询,它会占用大量资源。

有没有办法让MySQL服务器在内部执行此操作?

PS:我在插入行时使用name语法以避免重复。

编辑: 这是java的替代选择:

REPLACE INTO

我想使用mysql服务器进行循环,而不是在java中进行循环以节省i / o时间。

1 个答案:

答案 0 :(得分:2)

这是你想要的吗?

insert into mytable(name, uuid, . . .)
    select name, uuid, . . .
    from mytable
    where x between $xmin and $xmax and
          y between $ymin and $ymax;

如果是这样的话,那么你只需要一个查询,只需要合适的条件。