這個問題在這里已經有了答案: Oracle NUMBER(p) 存盤大小? (3 個回答) 昨天關閉。
我的任務是使用 AWS Schema Conversion Tool 將一些 Oracle 資料庫轉換為 Postgresql。Oracle 只有 Number[(precision[,scale])] 型別。Oracle 似乎使用定點存盤整數。許多 ID 列被定義為Number(19,0)正在Numeric(19,0)被 SCT轉換的列。
我什至見過一個(到目前為止)簡單Number的轉換為Double Precision.
Postgres 具有適當的標量整數型別,例如bigint.
乍一看,與簡單整數相比,將整數存盤為定點數在存盤和時間方面的效率都非常低。
我是否遺漏了什么,Oracle 是否將它們存盤為隱藏的高效標量整數?
出于興趣,Oracle 中簡單 ID 列的最佳型別是什么?
uj5u.com熱心網友回復:
Oracle 的數字資料型別是可變長度資料型別,這意味著該值1使用的存盤(和記憶體)比123456789
理論上number(19,0)應該映射到bigint,但是 Oraclenumber(19,0)允許存盤一個類似于Postgres 中9999999999999999999a 范圍的值bigint。
bigint可以存盤的最大價值是9223372036854775807- 如果這對您來說足夠了,那么堅持使用bigint.
如果你真的需要更高的值,你將不得不硬著頭皮numeric在 Postgres 中使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/371582.html
