内容

源文地址

 

1.一条sql插入多条数据

  INSERT INTO TBL_TEST (id) VALUES(1);
  INSERT INTO TBL_TEST (id) VALUES(2);
  INSERT INTO TBL_TEST (id) VALUES(3);

   改成

  INSERT INTO TBL_TEST (id) VALUES (1), (2), (3)

  优化目的:

    1.日志量(MySQL的binlog和innodb的事务让日志)减少了,降低日志刷盘的数据量和频率,从而提高效率。

    2.通过合并SQL语句,同时也能减少SQL语句解析的次数,减少网络传输的IO。

   

 

2. 在事务中进行插入处理

  START TRANSACTION;
  INSERT INTO TBL_TEST (id) VALUES(1);
  INSERT INTO TBL_TEST (id) VALUES(2);
  INSERT INTO TBL_TEST (id) VALUES(3);
  COMMIT;

   

 

3. 数据有序插入(是指插入记录在主键上是有序排列)

  例:id是主键  

  INSERT INTO TBL_TEST (id) VALUES(1);
  INSERT INTO TBL_TEST (id) VALUES(3);
  INSERT INTO TBL_TEST (id) VALUES(2);

   改成  

  INSERT INTO TBL_TEST (id) VALUES(1);
  INSERT INTO TBL_TEST (id) VALUES(2);
  INSERT INTO TBL_TEST (id) VALUES(3);

  优化目的:由于数据库插入时,需要维护索引数据,无序的记录会增大维护索引的成本。

   

 

 4.合并使用