使用VARCHAR2 (1字节)是否比使用CHAR(1字节)的效率低?
如果我从来不在字段中输入任何长度超过一个字符的值,那么使用VARCHAR2 (2000字节)是否比使用CHAR(1字节)的效率低?
**我所说的高效,是指在时间(搜索)和空间(存储)上的效率。
发布于 2009-04-21 21:04:24
根据字符集的不同,CHAR(1字节)可能无法存储任何特定的字符,因此如果我们讨论多字节字符,则VARCHAR2(2000字节)和CHAR(1字节)之间可能存在差异。
更一般地,在SQL语言中( PL/SQL规则略有不同),如果只存储1字节的数据,那么VARCHAR2(2000字节)不会比CHAR(1字节)消耗更多的存储空间(我假设"efficient“主要转化为存储效率)。VARCHAR2(2000字节)通常会导致客户端应用程序分配2000字节的缓冲区来保存字段的内容,因为客户端应用程序事先不知道实际数据大小,这可能会导致客户端应用程序使用过多的内存。不过,这可能会也可能不会转化为一个真正的问题。大多数客户端应用程序不会影响RAM,并且大多数结果集不会向客户端返回数百万行,因此在几百行上浪费几个k可能不是什么大问题。
这里有一个更详细的AskTom thread,特别是关于PL/SQL规则。
https://stackoverflow.com/questions/774550
复制相似问题