Varchar类型和性能问题

时间:2011-10-10 17:55:24

标签: mysql sql tsql varchar

我正在建模数据库,我想问一下Varchar类型。

Varchar(50)和Varchar(100)之间是否存在任何性能差异?

例如,我有一个varchar(50)字段,用户将5个字符数据保存到此字段,另一个用户将25个字符保​​存到此字段。但是没有人在这个领域保存50个char数据。所以我必须将此字段varchar(25)转为最大性能?

5 个答案:

答案 0 :(得分:1)

假设SQL Server(因为您还列出了MySQL),没有。

只要字段中的数据相同,开销就相同。

答案 1 :(得分:1)

对于大多数实施,VARCHAR(50)VARCHAR(25)之间可能存在无关紧要的性能差异;可能不值得担心。

根据经验,将场地设置为您认为自己想要使用的那么大。

以下是一些相关的讨论:
What are the optimum varchar sizes for MySQL?

从讨论开始,这里是相关的MySQL手册页:
http://dev.mysql.com/doc/refman/5.0/en/char.html

答案 2 :(得分:1)

不,如果定义varchar(50)并且只存储最多10个字符,则没有性能损失,以举例说明。 Varchar将始终将数据存储在行中。

答案 3 :(得分:1)

编辑:对于MySQL:不。至少,除非你有50到100个字符之间的字符串。

通常,varchars存储为长度+数据;仅存储所提供的数据。 varchar(100)占用更长的字节长度(最多300个字节,假设utf8每个字符3个字节),但是你不在乎它。

索引也一样。它只是你真正存储的东西。

答案 4 :(得分:1)

列长度应反映用户要在该列中存储的数据的最大长度。如果您的申请是根据经过深入研究的要求设计的,那么这个长度应该有一些理由;只是因为没有人存储字符串> 列中的25个字符并不意味着它们有一天不会出现。

要回答问题的其他方面,减少列的长度不会有任何性能提升。正如文档所述,该列仅占用存储空间以适合分配的数据。因此,只有25字节数据的VARCHAR(100)列不会占用比具有相同数据的VARCHAR(25)列更多的存储。 Find out more


存储是性能问题吗?它可以是,因为磁盘上的较短记录等于每个I / O操作检索的记录更多。