MYSQL手册问题varchar频繁更新

时间:2010-12-27 19:33:55

标签: mysql

MYSQL文档说明了这一点:

“对于频繁更改的MyISAM表,应尽量避免使用所有可变长度列(VARCHAR,BLOB和TEXT)。如果表中包含一个可变长度的列,则该表使用动态行格式。请参阅第13章,存储引擎。“

我正在建造的桌子将: 第1列:自动递增INT,设置为主键 然后20列Varchar(255) 300万行

varchar列将输入文本,通常大约100个字符,但在极少数情况下,最多可输入255个字符。每次读取表也会进行更新(读取,处理数据,然后使用新信息更新表),因此表中有很多“更改”。但这是上面引用的文章引用的相同变化吗?

我被告知这是一个非“教科书”设置,但它是专为速度而设计的,并且没问题。那么,问题是上面的手动引用是否意味着我应该使用Char(255)而不是varchar来满足我的需求?

1 个答案:

答案 0 :(得分:0)

这是文章所讨论的变化。 Char(255)应该产生更好的性能,但这将花费磁盘空间255字节 - (实际数据长度)。 此外,如果您这样做,您可能还需要在客户端代码中添加修剪。 根据{{​​3}}

  

当存储CHAR值时,它们用空格填充到指定的长度。检索CHAR值时,将删除尾随空格。

除非您使用documentation

,否则不会担心尾随空格
For binary strings, all characters are significant in comparisons, 
including trailing spaces: 

mysql> SET NAMES binary;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT 'a ' = 'a';
+------------+
| 'a ' = 'a' |
+------------+
|          0 |
+------------+
1 row in set (0.00 sec)