有没有理由使用TINYTEXT?

Rob*_*ert 6 mysql database varchar tinytext sqldatatypes

据我所知,VARCHAR(255)一切都TINYTEXT可以做到.VARCHAR具有相同的存储大小,它是ISO标准的一部分,它允许除null之外的默认值.我看不出任何使用理由TINYTEXT.但它存在,所以也许是有原因的.

是否存在TINYTEXT大小,速度或其他考虑因素的首选数据类型?

Bar*_*mar 6

我能想到的,唯一的情况TINYTEXT可能会有所帮助就是如果你有真正的大排.内容VARCHAR列计数反对65,535字节的最大行大小,但TEXTBLOB数据没有; 一TINYTEXT列只增加了1个字节的行大小.

实际上,对于InnoDB表,事情有点复杂.InnoDB存储在以下页面中描述:

https://dev.mysql.com/doc/refman/5.7/en/innodb-physical-record.html https://dev.mysql.com/doc/refman/5.7/en/innodb-row-format-dynamic .html https://dev.mysql.com/doc/refman/5.7/en/innodb-compression-internals.html

总而言之,存储在受上述限制的表部分中的数据TINYTEXT由1字节长度字段和20字节指向外部数据的指针组成,因此a TINYTEXT增加21字节到行长度.但是,当外部值小于40个字节时,数据将内联存储在行中.因此,对于TINYTEXT少于40个字节,存储类似于VARCHAR(255),并且它全部计入行长度限制.