測試NUMBER型別的效能
Oracle NUMBER 型別使用的CPU 時間遠高於浮點數型別。從NUMBER 型別得到的答案比從浮點數得到的答案“精確“得多。但是如果你在對科學資料執行資料探勘或進行復雜的數值分析,這種精度損失往往是可以接受的,另外可能會得到非常顯著的效能提升。
測試:
建立測試表
SQL> drop table t;
Table dropped.
SQL> create table t(num_type number,
2 float_type binary_float,
3 double_type binary_double)
4 /
Table created.
匯入測試資料
SQL> insert /*+ append */ into t
2 select rownum,rownum,rownum
3 from all_objects;
50193 rows created.
SQL> commit;
Commit complete.
SQL> alter session set events '10046 trace name context forever,level 12';
Session altered.
對列進行相同操作
SQL> select sum(ln(num_type)) from t;
SUM(LN(NUM_TYPE))
------------------------------
493084
SQL> select sum(ln(float_type)) from t;
SUM(LN(FLOAT_TYPE))
-------------------
4.931E+005
SQL> select sum(ln(double_type)) from t;
SUM(LN(DOUBLE_TYPE))
--------------------
4.931E+005
SQL>
檢視10046對應報告
select sum(ln(num_type))
from
t
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 2 1.03 1.01 0 171 0 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 1.04 1.01 0 171 0 1
select sum(ln(float_type))
from
t
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.01 0.01 0 1 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 2 0.05 0.05 0 170 0 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.07 0.07 0 171 0 1
select sum(ln(double_type))
from
t
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 1 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 2 0.05 0.05 0 170 0 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.06 0.06 0 171 0 1
但這並不是說就不要使用NUMBER型別,只是在對NUMBER型別進行大的計算時,可以改寫為其它方法,如使用 CAST,
select sum(ln(cast( num_type as binary_double ) ))
from
t
call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 1 0.01 0.01 0 1 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 2 0.07 0.07 0 170 0 1
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 4 0.09 0.09 0 171 0 1
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15720542/viewspace-731545/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【NUMBER】有關Oracle NUMBER型別定義中precision和scale的測試和總結Oracle型別
- 介面測試和效能測試的區別
- 【NUMBER】Oracle的NUMBER資料型別特點Oracle資料型別
- 小白測試系列:介面測試與效能測試的區別
- 功能測試、自動化測試、效能測試的區別
- Oracle的number資料型別Oracle資料型別
- 淺析number型別的值型別
- 征服number型別的input框型別
- ORACLE NUMBER資料型別Oracle資料型別
- number型別的顯示問題型別
- Sql Server 2005 row_number()分頁效能測試SQLServer
- js型別測試學習JS型別
- EF:oracle的number型別對映為C#的boolean型別Oracle型別C#Boolean
- 效能測試、負載測試、壓力測試有什麼區別?負載
- Oracle中number型別詳解Oracle型別
- number(p,s)型別詳解型別
- javascript型別系統——Number數字型別JavaScript型別
- 軟體驗收測試 常見測試報告的型別測試報告型別
- 軟體效能測試包含哪些測試型別?權威第三方軟體測評中心分享型別
- 測試Java中的long,int基本型別Java型別
- expdp測試包含有lob型別的物件型別物件
- 軟體測試開發:常見測試型別概念型別
- JS -- number資料型別詳解JS資料型別
- ORACLE NUMBER型別內部實現Oracle型別
- JS中其他資料型別轉為number資料型別的方法JS資料型別
- 效能測試總結(三)--工具選型篇
- 敏捷開發中的7種測試型別敏捷型別
- 測試使用字串型別要注意的地方字串型別
- 路由器測試的型別和方法[轉]路由器型別
- 一個簡單函式—Number型別轉換Date型別函式型別
- 網路安全滲透測試的型別!滲透測試入門教程型別
- Android Testing學習01 介紹 測試測什麼 測試的型別Android型別
- 【效能測試】使用ab做Http效能測試HTTP
- 效能測試的流程
- Redis的效能測試Redis
- 軟體測評中心▏效能測試、壓力測試、負載測試有什麼區別?負載
- 效能測試
- [20160828]number型別.txt型別