char()和varchar2()的区别

char():

          char()是存放固定长度字符的数据类型,最大长度是2000字符

        固定长度是指char(20)中即使存储3个字节的数据但是还是会占用20个字节的内存

varchar2():可以用非Unicode的字符数据

         varchar2()是存放可变长字符的数据类型,最大长度为4000字符

        可变长度是指varchar(20)中存储3个字节的数据,那么只会占用3个字节的内存

        所以varchar2()要比char()节省空间,但是在效率上却不如char()

        varchar2()保存空数据时会自动转换成null

        VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。当使用索引读取单行时,行迁移影响OLTP系统。最糟糕的情形是,对所有读取操作而言,增加了额外的I/O。行链接则影响索引读和全表扫描。

        varchar2()是oracle数据库特有的数据类型,使用varchar2()将会保证更好的兼容性

        在varchar2()中一个汉字占两个字符

扫描二维码关注公众号,回复: 1578852 查看本文章

猜你喜欢

转载自blog.csdn.net/zhutiandashen/article/details/55261607