Tom*_*Tom 2 mysql database varchar database-design char
我理解CHAR和VARCHAR之间的区别,一个是固定长度,另一个是可变长度,如果一行中的所有字段都是固定长度,表通常会表现得更好.
但是,我不清楚的是,如果我给VARCHAR一个长度,例如VARCHAR(500),这会将行保留为固定长度吗?
对于上下文,我有50列的干净表,大多数是TINYINT,但我需要在这个表中有两列作为VARCHAR,因为它们每个最多需要存储500个字符.确切的长度取决于用户输入,因此未知.
作为额外的限定,我真的不想将这些VARCHAR字段放入单独的引用表中,因为它会产生不必要的连接,并且不能非常有效地符合预期的查询模式.
任何帮助,将不胜感激.谢谢.
显然不是,否则它首先不会被称为可变长度.它只是在你可以存储在列中的字符串的最大长度上设置一个上限.在其他更可靠的数据库引擎上,超过max的字符串会产生错误,但MySQL只会截断多余的数据:
mysql> create table t (a varchar(3));
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t values ('abc'), ('defgh');
Query OK, 2 rows affected, 1 warning (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 1
mysql> select * from t;
+------+
| a |
+------+
| abc |
| def |
+------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)