数据库 (mysql) 数据类型选择:文本 vs 二进制

vic*_*tcu 1 mysql database-design

与 BLOB 或 BINARY 数据类型相比,选择 TEXT 数据类型有哪些权衡?我不打算在列上建立索引或在 WHERE 子句中使用它,它只是数据库中的数据,恰好是文本。不过,如果我选择的数据类型有性能或存储优势,那会很高兴知道......谢谢!

Fai*_*sal 5

简短回答:如果是文本,请使用 TEXT 数据类型。

长答案:TEXT 列被视为文本,即它们具有指定的字符集。如果您在 TEXT 值之间进行比较,它将使用您的字符集的排序规则,而不仅仅是比较它们的数值。另一方面,BLOB 列只是字节数组;他们没有定义的字符集。如果您正在存储 unicode(或其他“宽字符”编码),您肯定会想要使用 TEXT,因为除非您这样做,否则您的数据对数据库来说基本上是不透明的。

它们都可以存储相同数量的数据(当然取决于您使用的是哪种子类型),但是您可能会发现将 BLOB 用于二进制数据会带来很小的性能提升,因为不会有任何与文本相关的处理继续下去。