我有一个 MySQL 数据库,我想知道varchar
大小对我的查询性能的影响。
例如,就性能或数据库大小而言, avarchar(10)
和 a 有什么区别。varchar(50)
如果我有类似 10000 行的内容,它会对性能产生很大影响还是微不足道?
注意:我没有在这个专栏上做任何加入(如果这很重要)
我有一个 MySQL 数据库,我想知道varchar
大小对我的查询性能的影响。
例如,就性能或数据库大小而言, avarchar(10)
和 a 有什么区别。varchar(50)
如果我有类似 10000 行的内容,它会对性能产生很大影响还是微不足道?
注意:我没有在这个专栏上做任何加入(如果这很重要)
varchar(10)
表示允许的最大字节数为 10,varchar(50)
表示允许的最大字节数为 50。基本上,varchar(10) 在磁盘方面与 varchar(128) 没有什么不同。因此,无论以何种方式声明列,它都不会产生存储端的差异。但是在进行查询时肯定会有所作为。
从来源:
VARCHAR 列中的值是可变长度字符串。在 MySQL 5.0.3 之前,长度可以指定为 0 到 255 之间的值,在 5.0.3 和更高版本中可以指定为 0 到 65,535 之间的值。MySQL 5.0.3 及更高版本中 VARCHAR 的有效最大长度取决于最大行大小(65,535 字节,在所有列之间共享)和使用的字符集。
aVARCHAR(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 之间的值,在 5.0.3 和更高版本中可以指定为 0 到 65,535 之间的值。MySQL 5.0.3 及更高版本中 VARCHAR 的有效最大长度取决于最大行大小(65,535 字节,在所有列之间共享)和使用的字符集。请参见第 E.7.4 节,“表列数和行大小的限制”。
逐列替换每个 列可能会提高性能,从那时起,行将具有固定大小,从而减少碎片并以某种方式优化磁盘访问。VARCHAR
CHAR
话虽这么说,如果你只有 10000 行,我怀疑你会看到任何真正的区别,除非你有异常“长”的行。