我正在建模数据库,我想问一下Varchar类型。
Varchar(50)和Varchar(100)之间是否存在任何性能差异?
例如,我有一个varchar(50)字段,用户将5个字符数据保存到此字段,另一个用户将25个字符保存到此字段。但是没有人在这个领域保存50个char数据。所以我必须将此字段varchar(25)转为最大性能?
答案 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操作检索的记录更多。