笔记摘录:
SQLSERVER中,是支持insert into命令插入多条记录的:
insert into pm_stu values (3,'王五')(4,'赵六');
ORACLE中,上面是错误的,oracle貌似不支持一个insert插入多行记录,只能改写成一个insert插入一条记录:
insert into pm_stu values (3,'王五');
insert into pm_stu values (4,'赵六');
或者另一种方法:
insert into pm_stu
select 3,'王五' from dual
union all
select 4,'赵六' from dual
这两种方法的区别?是效率不同
insert into 表名 (字段a,字段b)
select '值a1','值b1' from dual
union
select '值a2','值b2' from dual
那么这一次就插入了两条数据。当然,如果全字段插入 那个(字段a,字段b)还可以省略掉。
好处是:避免了写复杂而又没必要写的存储过程,避免了执行多个SQL语句多次连接数据库的开销。
最后的实践证明,如果循环60万次Insert,一个小时也执行不完(当然有可能是机器太烂),而拼成1000条Select再插入一次,插入60万条的时间是20分钟,而拼成5000条Select再Insert一次,插入60万条数据的时间是12分钟。