日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 的 char number varchar2 效率测试

發(fā)布時間:2025/3/11 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)站內容還不錯,歡迎將生活随笔推薦給好友。