对于大量数据的插入操作,我们可以考虑使用批量插入的方式,而不是逐条插入。例如使用INSERT INTO ... VALUES (value1, value2), (value3, value4), ...;的方式,可以减少与数据库服务器的交互次数,从而提高插入操作的效率。 4. 并发控制 如果多个会话同时进行插入操作时出现锁竞争,我们可以考虑通过并发控制来优化。
对于insert操作来说,“一个事务处理多行的方式”比“一个事务处理一行的方式”插入相同的数据快了313倍,即插入2000个记录,一个事务一行的方式需要30.99秒,优化方式仅需要0.099秒。MySQL原始语法是支持对insert语句一次插入多行记录,即insert into table_name values ,后面跟着多行值。 但是对于update语句来说,MySQL并...
nameTEXT)engine=InnoDB;DROPPROCEDUREIFEXISTStest_insert_proc_batch;DELIMITER//CREATEPROCEDUREtest_insert_proc_batch(INnameTEXT,INcountINT)BEGINDECLAREiINTDEFAULT0;DECLAREnew_nameTEXTDEFAULT'';WHILEi<countDOSETnew_name=CONCAT(name,i);INSERTINTOtest_insert...
//循环拼接sql插入语句 $sql="insert into {$table_name} (field1,field2,field3,field4,field5) values "; for($i=$temp_data[$j]['start_no'];$i<=$temp_data[$j]['end_no'];$i++) { $sql.= sprintf($tmp_val,$i); } $sql= trim($sql,',') .';'; $bool=$this->db->query...
2、拼接SQL语句(总耗时:2.9秒) 简明:拼接格式:insert into student(xxxx) value(xxxx),(xxxx),(xxxxx)... 总结:拼接结果就是将所有的数据集成在一条SQL语句的value值上,其由于提交到服务器上的insert语句少了,网络负载少了,性能也就提上去。 但是当...
普通插入 SQL:INSERT INTO TBL_TEST (id) VALUES(1) 多值插入 SQL:INSERT INTO TBL_TEST (id) VALUES (1), (2), (3) 使用多值插入 SQL,SQL 语句的总长度减少,即减少了网络 IO,同时也降低了连接次数,数据库一次 SQL 解析,能够插入多条数据。
普通插入 SQL:INSERT INTO TBL_TEST (id) VALUES(1) 多值插入 SQL:INSERT INTO TBL_TEST (id) VALUES (1), (2), (3) 使用多值插入 SQL,SQL 语句的总长度减少,即减少了网络 IO,同时也降低了连接次数,数据库一次 SQL 解析,能够插入多条数据。
普通插入SQL:INSERT INTO TBL_TEST (id) VALUES(1) 多值插入SQL:INSERT INTO TBL_TEST (id) VALUES (1), (2), (3) 使用多值插入SQL,SQL语句的总长度减少,即减少了网络IO,同时也降低了连接次数,数据库一次SQL解析,能够插入多条数据。 事务(N条提交一次) ...
session.insert("insertUser", user); session.commit(); } long spendTime = System.currentTimeMillis()-startTime; System.out.println("成功插入 30 万条数据,耗时:"+spendTime+"毫秒"); } finally { session.close(); } } 执行后可以发现磁盘IO占比飙升,一直处于高位。
2、拼接SQL语句(总耗时:2.9秒) 简明:拼接格式:insert into student(xxxx) value(xxxx),(xxxx),(xxxxx)... 总结:拼接结果就是将所有的数据集成在一条SQL语句的value值上,其由于提交到服务器上的insert语句少了,网络负载少了,性能也就提上去。 但是当...