varchar(1)
和char(1)
之间是否存在性能差异?哪个RDBMS以不同的方式处理这两种数据类型和大小?
答案 0 :(得分:7)
在MS SQL中,VARCHAR(1)使用三个字节的存储空间,而CHAR(1)使用一个字节的存储空间。
CHAR(1)在处理和存储方面比VARCHAR(1)更有效。
'盈亏平衡'如果使用可变长度数据,则VARCHAR上的点将大于3个字符。
如果使用固定长度,则CHAR总是更有效两个字节。
答案 1 :(得分:4)
在大多数情况下,差异可以忽略不计。将您的绩效导向设计集中在能够产生真正差异的地方,如表格构成和索引设计。
有助于将设计工作分为两层:逻辑设计和物理设计 大多数以性能为导向的努力都处于第二阶段,即物理设计。
在逻辑设计中,灵活性胜过性能。除非它没有。
答案 2 :(得分:2)
就Oracle而言......
CHAR(2)将始终使用两个字节/字符的存储空间。 VARCHAR2(2)只能使用一个。所以一般情况是使用VARCHAR2而不是CHAR。
在实践中,您不应该看到一个字符列的性能差异。
由于CHAR永远不会带来任何好处,我总是使用VARCHAR2。
答案 3 :(得分:1)
它几乎不重要,因为在这两种情况下你都使用1个字节。
但长话短说,varchar是可变大小& char是固定大小的。这会大量存储空间并影响计算时间。
性能方面,如果数据是固定长度的话,请使用char。如果您灵活处理不同数据长度,请使用varchar。
答案 4 :(得分:1)
对于Oracle
VARCHAR2(1)和CHAR(1)在所有方面都相同。没有 在这种情况下使用CHAR类型的令人信服的理由,并避免任何 混淆,我“只是说不”,即使对于CHAR(1)领域也是如此。
参考:https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2668391900346844476
答案 5 :(得分:0)
在阅读MySQL对VARCHAR和CHAR的描述后,我的理解是,如果您的数据总是长度相同,那么CHAR可能会为您节省一个字节的数据,因为VARCHAR需要存储一个与实际数据,以记录数据的时长。但是,如果你的数据不是一个恒定长度并且你正在考虑空间考虑因素,那么使用VARCHAR是有意义的,因为CHAR将始终对声明长度的每个位使用一个字节,无论该空间中是否有任何内容
但最终,由于涉及的数据量非常小,它可能不会产生很大的差异。
以下是我获取信息的地方:http://dev.mysql.com/doc/refman/5.0/en/char.html如果您点击链接,请特别注意小图表,因为它提供了如何使用VARCHAR与CHAR处理数据的示例。