筆記摘錄:
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分鐘。