Oracle 表设计,存储小值

Eri*_*Day 2 oracle oracle-11g-r2 datatypes

在 Oracle 中如果要存储一个小值,例如一位数的代码(例如 0、1、2、3 4 或 Null;或 Null,或 1;或 1,或 2),空间最佳方式是什么存储这样的值。目前我正在查看一个系统,它决定将这些值存储为 VARCHAR2(11 CHAR),但这似乎是列类型的错误选项。从在线 Oracle 文档和全能的 Google 来看,似乎是 CHAR(1) 的更多空间最佳存储选项,因为它似乎是磁盘类型中最小的。

我的想法是完全错误的还是无论如何都无关紧要?

Phi*_*lᵀᴹ 8

文档在此处说明了数据类型的大小。

0(数字)存储为 1 个字节。其他个位数将存储在 2 个字节中(一个用于指数,一个用于尾数)。您可以通过创建一个测试表并使用VSIZE()测试数据上的函数(doc link)来自己测试。

ACHAR(n)将以n字节存储。

我总是将数字存储在NUMBER. 除非您要处理数万亿行,否则节省的空间将不够显着。

  • @EricDay 但它仍然是一个数字,表示另一个使用数字作为主键的表的外键。出于多种原因,将数字数据放入字符串字段是一个非常糟糕的想法,其中最重要的是缺乏数据完整性、磁盘空间增加和时髦的排序 (2认同)