Mysql varchar(255)对tinytext/tinyblob,varchar(65535)对blob/text

Mysql varchar(255)对tinytext/tinyblob,varchar(65535)对blob/text,mysql,Mysql,根据定义: VARCHAR:长度范围为1到255个字符。除非给出BINARY关键字,否则VARCHAR值将以不区分大小写的方式进行排序和比较。x+1字节 TINYBLOB,TINYTEXT:最大长度为255(2^8-1)个字符x+1个字节的BLOB或文本列 基于此,我得出下表: CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255), `lastname` tin

根据定义:

VARCHAR:长度范围为1到255个字符。除非给出BINARY关键字,否则VARCHAR值将以不区分大小写的方式进行排序和比较。x+1字节
TINYBLOB,TINYTEXT:最大长度为255(2^8-1)个字符x+1个字节的BLOB或文本列

基于此,我得出下表:

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255),
  `lastname` tinytext,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
还是最好创建一个varchar或tinytext并为什么

以下各项是否相同:

VARCHAR:长度范围大于255个字符。除非给出BINARY关键字,否则VARCHAR值将以不区分大小写的方式进行排序和比较。x+2字节
BLOB,TEXT最大长度为65535(2^16-1)个字符x+2个字节的BLOB或文本列


在这种情况下,
varchar
更好

请注意,
varchar
可以是1到65535个字符

VARCHAR列中的值是可变长度字符串。在MySQL 5.0.3之前,长度可以指定为0到255之间的值,在5.0.3及更高版本中,长度可以指定为0到65535之间的值。MySQL 5.0.3及更高版本中VARCHAR的有效最大长度取决于最大行大小(65535字节,在所有列中共享)和使用的字符集。见第E.7.4节“表列计数和行大小限制”

Blob保存在文件的单独部分。
它们需要额外的文件读取才能包含在数据中。
因此,获取varchar的速度要快得多

如果您有一个不常访问的大blob,则使用blob更有意义。

将blob数据存储在单独的(部分)文件中可以使核心数据文件更小,从而更快地获取

这是否更好取决于您的数据访问模式。这可能是哪个单独的文件?Blob不会保存在单独的文件中。但它们存储在与其他列不同的物理位置。请注意,这不仅取决于访问频率,还取决于对数据执行的操作。例如,任何需要表扫描的查询(这通常是不好的),但文本列不会因扫描的数据量过大而变得更糟。我还怀疑,如果数据存储在页外,不使用此列的文件排序可能会更高效,尽管我不确定查询优化器是否足够聪明,不会提取此数据。VARCHAR需要更少的内存开销,但是它们通常会在内存中被完全读取,因此最后VARCHAR可能仍然会使用更多内存。它们都是不同的。使用BLOB存储二进制数据,如图像、音频和其他多媒体数据。和VARCHAR来存储任何大小的文本。