使用CHAR比使用VARCHAR2有什么好处吗?特别是Oracle数据库?据我所知,实际上并没有很多建议使用VARCHAR2
除了固定长度和可变长度之外,还有什么区别?
为什么没有什么好处,却根本没有从Oracle中删除?
答案 0 :(得分:1)
已被问及回答
Oracle datatype: Should I use VARCHAR2 or CHAR
只是为了避免混淆很多错误的信息。以下是有关差异(包括性能)的一些信息
参考:https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2668391900346844476
由于char只不过是空白填充的VARCHAR2 到最大长度-即X列之间的差 和下面的Y:
创建表t(x varchar2(30),y char(30));插入t(x,y) 值(rpad('a',',, 30),'a');
绝对没有,并且鉴于X列之间的差异 和下面的Y:
插入t(x,y)个值('a','a')
是X占用3个字节(空指示符,前导字节长度,1 'a'的字节),Y占用32个字节(空指示符,前导字节) 长度,'a')的30个字节)
嗯,varchar2将在某种程度上“处于优势表现 明智”。它根本不能帮助char(30)始终为30个字节- 我们,这只是一个varchar2,空白填充到最大 长度。它可以帮助我们进行加工-零,zilch,zippo。
任何时候您看到有人说“速度快50%”,就是这样- 没有例子,没有科学,没有事实,没有故事可以支持-只是笑 向他们大声喊叫,继续前进。
该页面上还有其他“虚构的东西”,例如:
“由于所有字符串都存储在一个中,因此在CHAR中搜索速度更快 彼此指定位置,系统不必 搜索字符串的结尾。而在VARCHAR中,系统必须 首先找到字符串的结尾,然后再进行搜索。”
FALSE:字符只是填充的varchar2空白-我们不存储 字符串“彼此之间在指定位置”。我们确实在寻找 字符串的结尾-我们使用前导字节长度来计算事物