2

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

例如,就性能或数据库大小而言, avarchar(10)和 a 有什么区别。varchar(50)

如果我有类似 10000 行的内容,它会对性能产生很大影响还是微不足道?

注意:我没有在这个专栏上做任何加入(如果这很重要)

4

2 回答 2

4

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 字节,在所有列之间共享)和使用的字符集。

于 2013-08-17T13:47:12.327 回答
2

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 节,“表列数和行大小的限制”。


逐列替换每个可能会提高性能,从那时起,行将具有固定大小,从而减少碎片并以某种方式优化磁盘访问。VARCHARCHAR

话虽这么说,如果你只有 10000 行,我怀疑你会看到任何真正的区别,除非你有异常“长”的行。

于 2013-08-17T14:09:21.530 回答