Mysql 一起执行查询以提高效率

Mysql 一起执行查询以提高效率,mysql,database,jdbc,Mysql,Database,Jdbc,目前,我正在使用准备好的语句对数据库执行查询或更新。虽然预先编译,因此速度很快,但我认为如果能有这样一种安排,它会更有效率: 情景: 假设我必须在数据库表中插入100行。我使用prepare语句,所以我准备了一个语句并将其发送到数据库执行。因此,每次查询的形式如下: insert into user values(....); 当我查询表格时,请考虑这种情况。 insert into user values (...), (...), ....,(...); 通过这种方法,我们可以最小化表访

目前,我正在使用准备好的语句对数据库执行查询或更新。虽然预先编译,因此速度很快,但我认为如果能有这样一种安排,它会更有效率:

情景:

假设我必须在数据库表中插入100行。我使用prepare语句,所以我准备了一个语句并将其发送到数据库执行。因此,每次查询的形式如下:

insert into user values(....);
当我查询表格

时,请考虑这种情况。
insert into user values (...), (...), ....,(...);
通过这种方法,我们可以最小化表访问并一次性执行查询


我们是否可以通过使用准备好的语句或这样的安排来实现这一点,我们可以指示数据库一起执行接下来的100个更新。顺便问一下,我目前正在使用mysql,有什么理由不把它作为一个操作来做吗

可能有更好的方法,但我只需将一个文件写入/dev/shm,然后在LOAD DATA INFILE语句中引用,这样就不会影响客户机上的磁盘

使用VALUES语法的INSERT语句可以插入多行。到 为此,请包含多个列值列表,每个列值都包含在 括号和之间用逗号分隔。例如:

试试像这样的东西

st = con.createStatement();
  st.addBatch("INSERT INTO tbl_name VALUES(1,2,3)");
  st.addBatch("INSERT INTO tbl_name VALUES(4,5,6)");
  st.addBatch("INSERT INTO tbl_name VALUES(7,8,9)");
  st.executeBatch();

@AmanDeepGautem什么是表引擎?如果您使用innodb,则可以在开始插入之前将autocommit设置为0,完成后只需进行提交;yup引擎是innodb。看起来不错,我会试试看。但他们没有直接的方式支持它。java有没有办法支持这种形式的preparedstatement?是的,但是这个语句不是预编译的。这是这种方法的缺点。addBatch和executeBatch为您提供了执行批插入的机制。您应该使用PreparedStatement和executeBatch来避免重复同一个SQL文本。我已编辑了答案,并对上述注释进行了说明。
st = con.createStatement();
  st.addBatch("INSERT INTO tbl_name VALUES(1,2,3)");
  st.addBatch("INSERT INTO tbl_name VALUES(4,5,6)");
  st.addBatch("INSERT INTO tbl_name VALUES(7,8,9)");
  st.executeBatch();