我有一个MySQL数据库,我想知道varchar
大小对我的查询性能的影响。
例如,就性能或数据库大小而言,varchar(10)
和varchar(50)
之间的区别是什么。
如果我有10000行的话,它会对演出产生很大的影响还是微不足道?
注意:我没有对此列进行任何加入(如果这很重要)
答案 0 :(得分:4)
varchar(10)
表示允许的最大字节数为10,varchar(50)
表示允许的最大字节数为50.基本上,varchar(10)与varchar(128)的磁盘方式没有区别.So ,无论你声明列的方式如何,它都不会对存储端产生影响。但在进行查询时肯定会有所作为。
来自source:
VARCHAR列中的值是可变长度字符串。长度可以 在MySQL 5.0.3之前指定为0到255之间的值,0到 5.0.3及更高版本中的65,535。 a的有效最大长度 MySQL 5.0.3及更高版本中的VARCHAR受最大行大小的限制 (65,535字节,在所有列之间共享)和字符 设置已使用。
答案 1 :(得分:2)
VARCHAR(10)
和VARCHAR(50)
之间的表现应该没有任何实际差异。
真正的区别在于CHAR
和VARCHAR
。
http://dev.mysql.com/doc/refman/5.0/en/char.html
CHAR列的长度固定为您声明的长度 当你创建表时。长度可以是0到255之间的任何值。 存储CHAR值时,它们右边用空格填充 指定长度。检索CHAR值时,尾随空格为 除去。
VARCHAR列中的值是可变长度字符串。长度可以 在MySQL 5.0.3之前指定为0到255之间的值,0到 5.0.3及更高版本中的65,535。 a的有效最大长度 MySQL 5.0.3及更高版本中的VARCHAR受最大行大小的限制 (65,535字节,在所有列之间共享)和字符 设置使用。请参见第E.7.4节“表列计数和行的限制” 尺寸”。
通过VARCHAR
列替换每个 CHAR
可能提高性能,从那时起,行将具有固定的大小,从而减少碎片并以某种方式优化磁盘访问。
话虽如此,如果你只有10000行,我怀疑你会看到任何真正的区别,除非你有异常“长”的行。