Possible Duplicate:
MySQL: Large VARCHAR vs. TEXT?

既然VARCHAR现在可以有65k字节,那么什么时候应该使用TEXT而不是VARCHAR

推荐答案

VARCHAR的存储方式与InnoDB中的TEXT/BLOB字段相同.

从存储块中,文本为

source

除非您需要对这些列进行索引(在这种情况下,VARCHAR要快得多),否则没有理由对长字段使用VARCHARTEXT-MySQL中有一些特定于引擎的优化,以根据长度调整数据检索,您应该使用正确的列类型来利用这些.

如果你用的是MyISAM,对这个话题的深入讨论是here.


TEXTBLOB存储在表外,而表只有一个指向实际存储位置的指针.

VARCHAR与表内联存储.当尺寸合理时,VARCHAR更快.

根据this testVARCHAR大约是文本的三倍.

Mysql相关问答推荐

括号在SQL查询中的作用?

拒绝非超级用户访问停靠的MariaDB(超级用户工作)

在MySQL中从非连续数据创建时间线

SQL计算不同的列并返回所有行

MySQL嵌套的内连接使查询变得很慢-解决方案?

如何将左联接的小计/总计行中的所有列作废

使用字符串文字与使用日期文字时的SQL行为

带有值分隔的MySQL分组不起作用

MySQL-带有用户定义变量的IF-THEN语句

无法确定查询逻辑

错误 2020 (HY000): 数据包大于 'max_allowed_pa​​cket' 字节,docker 容器内出现 mysql 错误

java.lang.NullPointerException:无法调用com.proj.my.repository.OrderRepository.save(Object),因为this.orderRepository为空

提取 MySQL 5.7 连续值的差异

MySQL中两个时间字段的分钟差

Ansible 幂等 MySQL 安装 Playbook

在另一个 where 语句(子查询?)中使用一个 sql 查询的结果

用户 'User'@'%' 和 'User'@'localhost' 不一样吗?

考虑到 NodeJS,MySQL 和 MySQL2 有什么区别

加快 mysql 转储和导入

在 MySQL 中的子查询上使用 GROUP_CONCAT