建表规约 8 提到定义text类型字段,独立出一张表,避免影响其他字段索引效率
问题描述不理解为什么需要独立出一张表,否则会影响其他字段索引效率(text类型字段肯定不会被建立索引)。 能从底层存储原理解释下吗?谢谢。
建表规约 8 提到定义text类型字段,独立出一张表,避免影响其他字段索引效率
问题描述不理解为什么需要独立出一张表,否则会影响其他字段索引效率(text类型字段肯定不会被建立索引)。 能从底层存储原理解释下吗?谢谢。
我也同样存在这样的疑惑,但是根据我查阅的相关资料,我不会执行阿里巴巴的这条规约,相反,我会使用varchar来代替text,不知道是不是我遗漏了什么东西。希望规约制定者能够解释一下背后的原因。
我查阅的相关资料:
如果大于5000字符的情况下,这么做没有问题。 可以针对性地对此表进行搜索引擎优化。
比如网站的详情说明。 索引的步长因为突然有一个大的文本插入,会有影响。 纳秒级的影响。 从可维护性和可理解性的角度来说,也是这么做更好。
@yangguanbao 在MySQL :: MySQL 5.6 Reference Manual :: 14.11 InnoDB Row Formats说到
Tables that use the COMPACT row format store the first 768 bytes of variable-length column values (VARCHAR, VARBINARY, and BLOB and TEXT types) in the index record within the B-tree node, with the remainder stored on overflow pages.
并不是所有的数据都存储在index record里面的。我不太理解你说的索引的步长因为突然有一个大的文本插入,会有影响。,可以具体地解释一下吗?