为什么我在MySQL中使用VARCHAR over TEXT?

Tow*_*wer 3 mysql

我注意到在MySQL中,VARCHAR和TEXT都提供可变大小的数据.好吧,VARCHAR在数据存储方面更有效率,但TEXT MEDIUMTEXT和LONGTEXT仍然提供了更多的潜力.那么,VARCHAR的真正用途是什么?

Pas*_*TIN 8

首先,你应该阅读10.4.MySQL手册的字符串类型部分:它将为您提供您正在寻找的所有信息:


几个重要的区别:

  • 可包含的文本数量的差异:
    • varchar的大小限制很小; 对于最新版本的MySQL,它是64 KB,对于一行中所有varchar列的总数 - 这并不是那么多.
    • TEXT几乎没有限制,因为它们可以包含类似2 ^ 32字节的内容.
  • 如果我没有错,那么索引和排序就会有所不同; 引用有关TEXT的页面:
    • 关于排序:"排序时max_sort_length使用列的第一个字节. "
    • 并且,关于性能:" 使用临时表处理的查询结果中的BLOB或TEXT列的实例导致服务器使用磁盘而不是内存中的表 "


考虑到这些信息,如果你确定你的字符串不会太长,并且你总是能够将它们存储在varchar中,我会使用varchar.