Oracle字符类型

Ste*_*ven 1 oracle types char varchar2

使用VARCHAR2(1 BYTE)的效率是否低于使用CHAR(1 BYTE)?

使用VARCHAR2(2000 BYTE)的效率是否低于使用CHAR(1 BYTE),如果我从未在字段中放置任何超过一个字符的值?

**通过高效,我意味着在时间(搜索)和空间(存储)方面都很有效率.

Jus*_*ave 5

根据您的字符集,CHAR(1 BYTE)可能无法存储任何特定字符,因此如果我们讨论的是多字节字符,则VARCHAR2(2000 BYTE)和CHAR(1 BYTE)之间可能存在差异.

更一般地说,在SQL中(PL/SQL规则有点不同)如果只存储1个字节的数据,VARCHAR2(2000 BYTE)将不会消耗比CHAR(1 BYTE)更多的存储空间(我假设"高效"主要转化为存储效率".VARCHAR2(2000 BYTE)将经常导致客户端应用程序分配一个2000字节的缓冲区来保存字段的内容,因为客户端应用程序事先不知道实际的数据大小,这可能导致客户端应用程序使用过多RAM的数量.但是,这可能会或可能不会转化为真正的问题.大多数客户端应用程序都没有损坏RAM,大多数结果集都没有向客户端返回数百万行,因此在几百行上浪费几个k可能不是什么大问题.

有一个AskTom线程更详细,特别是关于PL/SQL规则.