我知道Varchar2 (x char) x Varchar2 (x字节)之间的定义差异。
Varchar2(20个字符)意味着您可以存储20个字符--而varchar2( 20 )表示您可以存储20个字节。
谢谢!
发布于 2015-07-21 18:17:10
假设您的数据库字符集是AL32UTF8 (如果两者之间有差异,这几乎肯定是您的字符集),并且所有数据都是存在于US7ASCII字符集中的字符(根据我们正在使用的定义,“english”可能构成的字符可能更多),那么varchar2(n CHAR)和varchar2(n BYTE)之间就不会有任何明显的性能差异。
基于数据库字符集,Oracle需要做更多的工作来读取字符串,以确定每个字节代表单个字符,而不是多字节字符的一部分。但是,在字符或字节中检查字符串的长度是非常简单的操作。除非你正在运行一个TPC基准测试,在那里你已经做了很多在现实中你永远不会做的事情,以获得微小的性能改进,这是不值得担心的事情。
如果您要疯狂地使用TPC基准级别来获得最后的千分之一,那么使用US7ASCII的数据库字符集并使用字节语义声明所有内容可能会稍微高效一些,因为您只需要存储英语。但是,实际上,如果您的应用程序效率如此之高,以至于这类事情很重要,那么您已经解决了每个性能问题,因此您应该更多地关注可支持性和可维护性,这将需要一个AL32UTF8字符集和字符长度语义。
https://dba.stackexchange.com/questions/107661
复制相似问题