Vue3 的新特性(一):ref()、reactive()、toRef() 和 toRefs()
阿新 • • 發佈:2021-01-12
目錄
1 引言
Oracle
資料庫對於大資料量的更新和插入如果一次一行SQL的寫的話,顯得有點low
同時也是效率問題容易讓人抓狂,因此在這裡記敘下針對Oracle
的批量更新和插入
建表:
-- 學生表
create table student (id varchar2(20),name varchar2(20),class varchar2(20));
-- 其他表
create table other (id varchar2(20),name varchar2(20));
1.1 批量更新
1.1.1 一般方式
update student s set s.name = (select o.name from other o where s.id = o.id ) where exists (select 1 from other o where s.id = o.id ) ;
引申問題:
針對上述的sql
中的where
條件可有可無,如果沒了是全表更新,但是更新結果是需要匹配的上才更新,不然不更新,這樣不容易看出實際更新了多少行;如果有where
條件,就先去查證符合條件的再去更新,這樣可以看出來更新了多少行
1.1.2 使用遊標
由於一般的update
更新耗時久,5W
條資料能耗時12分鐘
,因此遊標方式可以作為考慮
declare cursor my_cur is --宣告遊標my_cur select s.id,o.name from student s,other o where s.id = o.id ; count NUMBER;--宣告一個number型別的變數 BEGIN count:=0;--初始化變數值為0 FOR cur IN my_cur LOOP--遍歷遊標 UPDATE student s SET s.name=cur.name WHERE s.id=cur.id; count:=count+1;--每次迴圈變數值+1 IF(count>=1000) THEN COMMIT; count:=0;--每更新1000行,count值為1000時候,就提交給資料庫提交後將變數歸零,繼續下一個1000行更新 END IF; END LOOP; COMMIT; END; /
1.2 批量插入
一般批量插入方式與一般的插入語句是少了values
關鍵字就可以使用批量插入了
insert into student
select o.*,'1' from other o
如果插入過多的話,可以使用遊標的方式插入,來提高效率