【发布时间】:2015-09-12 07:39:08
【问题描述】:
我平均需要在数据库中存储大约 800 个字符的一段文本。在极少数情况下,它可能会达到 2000-2500~ 个字符。我已经阅读了手册,并且我知道已经有很多这样的问题,但是我已经阅读了关于 stackoverflow 的 10 多个问题,我仍然发现我仍然很难弄清楚我是否应该简单地使用文本或类似 varchar( 2000)。一半似乎说使用 varchar,而另一半说文本。有人说如果您有超过 255 个字符,请始终使用文本(是的,这是在 5.0.3 之后允许 varchar 高达 65k)。但后来我想如果我每次字符超过 255 时都使用文本,那么如果这始终是最好的选择,mysql 为什么还要费心增加大小呢?
它们在我读过的存储空间中都有可变大小,所以我的情况没有区别吗?我个人倾向于 varchar(2000) 然后我读到 varchar 内联存储数据,而 text 没有。这是否意味着如果我经常选择此列,将数据存储为 varchar 会更好,相反,如果我很少选择此列,那么使用文本会更好?如果这是真的,我想我现在会选择文本列,因为我在表上运行查询的很多时候都不会选择这个列。如果重要的话,这个表也经常被加入(但不会选择列),这是否也会进一步提高使用文本的好处?
在这种情况下我应该使用文本的假设是否正确?
【问题讨论】:
-
从内存使用方面考虑。 VARCHAR 字段是行的一部分,其中 TEXT 列只是由行中的地址指向磁盘上的。您的决定将影响查询缓存(该内存可容纳多少结果集)、表缓存(该内存可容纳多少表)、每个查询缓冲区可容纳多少行等。