生活随笔
收集整理的這篇文章主要介紹了
Oracle 的 char number varchar2 效率测试
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
自己在建表的時候,用到了編號的這個字段,
主要問題是要用java連接數(shù)據(jù)庫,所以要有pojo類,
就像 編號 這種字段,int 不夠,long 轉起來麻煩,還容易出錯。
突然想看看char可不可以,所以就稀里糊涂的想看看,這幾種數(shù)據(jù)類型的查找效率究竟如何。
--首先總要先建立一張表吧(如果有重復的話,先刪掉...)
drop table yard_test;
create table yard_test (yrd_id char(32),yrd_num number,yrd_var varchar2(32),into_time date,yrd_txt varchar2(4000)
);--必然要有需要的數(shù)據(jù)類型 char number varchar2--下面可以插入數(shù)據(jù)了,建一個plsql語句塊,執(zhí)行一下就可以。
declarev_temp yard_test%rowtype;v_begin_time timestamp := systimestamp;v_end_time timestamp;v_all_time timestamp;
begin
for i in 1..100 loop--每一萬條數(shù)據(jù)提交一次,總共提交100萬次,其實有點多,我都沒耐性等他插入完成就......for j in 1..10000 loopv_temp.yrd_id := sys_guid();v_temp.yrd_var := sys_guid();select nvl(max(yrd_num),0)+1 into v_temp.yrd_num from yard_test;--本來應該用sequence的,嫌麻煩,直接用select語句取得max值+1 得到了序號...v_temp.yrd_txt := substr(sys_guid(),1,1);insert into yard_test values(v_temp.yrd_id,v_temp.yrd_num,v_temp.yrd_var,systimestamp,v_temp.yrd_txt);v_end_time := systimestamp;v_all_time := v_all_time + (v_end_time - v_begin_time);--插入數(shù)據(jù)end loop;commit;dbms_output.put_line(v_all_time);
end loop;
dbms_output.put_line(v_all_time);
end;--好了,可以看看都插入了寫什么數(shù)據(jù),
select * from yard_test;--下面開始測試
declarev_beg timestamp;--一定要記好開始時間v_end timestamp;--和結束時間v_times number := 100000;
begin--測試查找第50000條數(shù)據(jù)的速度v_beg := systimestamp;for i in 1..v_times loopexecute immediate 'select * from yard_test where yrd_num = 50000';--用execute直接運行sql語句,這里是通過number查找數(shù)據(jù)end loop;v_end := systimestamp;dbms_output.put_line('number 查詢時間 ' || (v_end-v_beg));v_beg := systimestamp;for i in 1..v_times loopexecute immediate 'select * from yard_test where yrd_id = ''4A6585C231B64BD1B5A981EDD8079990''';end loop;v_end := systimestamp;dbms_output.put_line('char 查詢時間 ' || (v_end-v_beg));v_beg := systimestamp;for i in 1..v_times loopexecute immediate 'select * from yard_test where yrd_var = ''18C00CA4677E4BF388BD9F3891BBACA0''';end loop;v_end := systimestamp;dbms_output.put_line('carchar2 查詢時間 ' || (v_end-v_beg));
end;
其實在網(wǎng)上我也發(fā)現(xiàn)有其他同學做的測試,結論也都一樣...
都是 char 效率最高,number 其次,最慢的是varchar2,差的也不大,也都能接受。
總結
以上是生活随笔為你收集整理的Oracle 的 char number varchar2 效率测试的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。