varchar(1)与char(1)之间的性能

时间:2010-07-30 02:13:28

标签: database-design data-modeling

varchar(1)char(1)之间是否存在性能差异?哪个RDBMS以不同的方式处理这两种数据类型和大小?

6 个答案:

答案 0 :(得分:7)

在MS SQL中,VARCHAR(1)使用三个字节的存储空间,而CHAR(1)使用一个字节的存储空间。

CHAR(1)在处理和存储方面比VARCHAR(1)更有效。

'盈亏平衡'如果使用可变长度数据,则VARCHAR上的点将大于3个字符。

如果使用固定长度,则CHAR总是更有效两个字节。

参考:http://msdn.microsoft.com/en-gb/library/ms176089.aspx

答案 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处理数据的示例。