使用 VARCHAR2 (1 BYTE) 是否比使用 CHAR(1 BYTE) 效率低?
如果我从未在字段中输入任何超过一个字符的值,那么使用 VARCHAR2(2000 BYTE)是否比使用 CHAR(1 BYTE)效率低?
** 高效是指在时间(搜索)和空间(存储)方面都高效。
根据您的字符集,CHAR(1 BYTE) 可能无法存储任何特定字符,因此如果我们谈论多字节字符,则 VARCHAR2(2000 BYTE) 和 CHAR(1 BYTE) 之间可能存在差异。
更一般地说,在 SQL(PL/SQL 规则有点不同)中,如果您只存储 1 个字节的数据(我假设“高效”主要转化为存储效率)。一个 VARCHAR2(2000 BYTE) 会经常导致客户端应用程序分配一个 2000 字节的缓冲区来保存字段的内容,因为客户端应用程序事先不知道实际数据大小,这可能会导致客户端应用程序使用过多RAM 量。不过,这可能会或可能不会转化为真正的问题。大多数客户端应用程序不会因为 RAM 而受到伤害,大多数结果集也不会向客户端返回数百万行,因此在几百行上浪费几个 k 可能没什么大不了的。
有一个AskTom 线程更详细,特别是关于 PL/SQL 规则。