varchar有什么后果?

时间:2013-08-17 13:39:04

标签: mysql database-performance

我有一个MySQL数据库,我想知道varchar大小对我的查询性能的影响。

例如,就性能或数据库大小而言,varchar(10)varchar(50)之间的区别是什么。

如果我有10000行的话,它会对演出产生很大的影响还是微不足道?

注意:我没有对此列进行任何加入(如果这很重要)

2 个答案:

答案 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)之间的表现应该没有任何实际差异。

真正的区别在于CHARVARCHAR

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行,我怀疑你会看到任何真正的区别,除非你有异常“长”的行。