有3种情况
1. 代码里面for循环执行多个插入
2.存储过程里面利用  insert select 方式单句插入多条
3.select后 for loop方式 循环insert插入我目前知道的是 情况1会session的开关和多次硬解析造成效率低下
求解第二种和第三种的效率比较

解决方案 »

  1.   

    方法2 会造成select的表锁表,方法3 将insert做成事务效率会更好
      

  2.   


    如果要说效率,我觉得应该是第2种效率比较高,实际上再优化的时候,也有一些相对固定的思路。比如,批量化操作,之所以能效率比较高,是因为单个插入操作要消耗一些时间,那么一次插入一批数据,效率就会高很多。另外,就是这个批量操作有一层意思,就是批量commit,也是上面版主提到第3条,在mysql中默认是autocommit为1的,也就是你插入一条数据,就提交一次,如果你插入1000条数据,就要提交1000次,虽然每次commit可能只消耗0.00几秒,但是乘上次数,消耗就会成倍上去,这就是杠杆效应,所以,可以做出一个事务:start transactioninsert commit
      

  3.   

    看执行计划,和commit的效率了