因为char只是一个空白填充到最大长度的VARCHAR2 - 即下面的列X和Y之间的差异:
create table t(x varchar2(30),y char(30)); 插入t(x,y)值(rpad('a','',30),'a');
绝对没有,并且考虑到以下列X和Y之间的差异:
插入t(x,y)值('a','a')
是X消耗3个字节(空指示符,前导字节长度,'a'为1个字节),Y消耗32个字节(空指示符,前导字节长度,'a'为30个字节)
嗯,varchar2将在某种程度上“在性能方面具有优势”。它帮助我们不是所有char(30)总是30个字节 - 对我们来说,它只是一个空白填充到最大长度的varchar2。它帮助我们处理 - ZERO,zilch,zippo。
任何时候你看到有人说“它的速度提高了50%”,就是这样 - 没有例子,没有科学,没有事实,没有任何故事要支持它 - 只要大声笑出来并继续前进。
该页面上还有其他“组成的东西”,例如:“在CHAR中搜索速度更快,因为所有字符串都存储在 彼此指定的位置,系统不必 搜索字符串的结尾。而在VARCHAR中系统必须 首先找到字符串的结尾然后去搜索“。
FALSE:char只是一个varchar2空白填充 - 我们不会将字符串“存储在彼此指定的位置”。我们搜索字符串的结尾 - 我们使用前导字节长度来解决问题。