上QQ阅读APP看书,第一时间看更新
4.2 如何选择数据类型
Oracle提供了大量的数据类型,为了优化存储,提高数据库性能,在任何情况下均应使用最精确的类型,即在所有可以表示该列值的类型中,该类型使用的存储最少。
1.整数和小数
数值数据类型只有NUMBER型,但是NUMBER功能不小,它可以存储正数、负数、零、定点数和精度为30位的浮点数。格式为number(m,n),其中m为精度,表示数字的总位数,它在1~38;n为范围,表示小数点右边的数字的位数,它在-84~127。
如果不需要小数部分,则使用整数来保存数据,可以定义为number(m,0)或者number(m)。如果需要表示小数部分,则使用number(m,n)。
2.日期与时间类型
如果只需要记录日期,则可以使用DATE类型。如果需要记录日期和时间,可以使用IMESTAMP类型。特别是需要显示上午、下午或者时区时,必须使用IMESTAMP类型。
3.CHAR与VARCHAR之间选择
CHAR和VARCHAR的区别:
- CHAR是固定长度字符,VARCHAR是可变长度字符。CHAR会自动补齐插入数据的尾部空格,VARCHAR不会补齐尾部空格。
- CHAR是固定长度,所以它的处理速度比VARCHAR2的速度要快,但是它的缺点就是浪费存储空间。所以对存储不大,但在速度上有要求的可以使用CHAR类型,反之可以使用VARCHAR2类型来实现。
VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起“行迁移”(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用char代替VARCHAR2会更好一些。当然还有一种情况就是像身份证这种长度几乎不变的字段可以考虑使用CHAR,以获得更高的效率。