我需要平均存储一段文本,在数据库中约为800个字符.在极少数情况下,它可能会达到2000-2500~字符.我已经阅读了手册,我知道已经有很多这样的问题了,但我已经阅读了10多个关于stackoverflow的问题,我仍然觉得有点难以弄清楚我是否应该简单地使用文本或类似varchar( 2000).一半似乎说使用varchar,而另一半说文字.有些人说如果你有超过255个字符,总是使用文本(是的,这是在5.0.3之后允许varchar高达65k).但后来我想,如果每次字符都超过255时我都会使用文本,那么为什么mysql总是在增加大小,如果这总是最好的选择呢?
它们都有可变的存储空间我读过,所以我的情况会有所不同吗?我个人倾向于varchar(2000)然后我读到varchar存储数据内联而文本没有.这是否意味着如果我不断选择此列,将数据存储为varchar会更好,相反,如果我很少选择此列,那么使用文本会更好吗?如果这是真的,我想我现在会选择文本列,因为我不会在桌面上运行查询时多次选择此列.如果重要的话,这个表也经常加入(但不会选择列),这是否会进一步增加使用文本的好处?
我的假设是否正确,在这种情况下我应该使用文本?
在搜索SO时,我发现了两个相互矛盾的答案(甚至是一条评论说明了这一点),但没有明确的答案:
问题是:如果在表外存储TEXT/BLOB字段,是否有任何性能优势?
我们猜测:
这篇文章指出,将TEXT/BLOB放入一个单独的表中,只有在你已经以错误的方式选择时才会有所帮助(即使没有必要也总是选择TEXT/BLOB) - 基本上说明了TEXT/BLOB中的TEXT/BLOB相同的表基本上是更好的解决方案(更少的复杂性,没有性能损失等),因为TEXT/BLOB无论如何都是单独存储的
将TEXT列移动到另一个表中的唯一时间将提供任何好处,如果通常从表中选择所有列的趋势.这只是引入第二种不良做法来弥补第一种不良做法.不言而喻,这两个错误与三个左翼不一样.
但是,这篇文章指出:
当表具有TEXT或BLOB列时,表无法存储在内存中
这是否意味着在表格中有一个TEXT/BLOB已经足够,以达到性能?
我的问题基本上是:答案是正确的?
如果你SELECT正确地将TEXT/BLOB存储到一个单独的表中,这真的很重要吗?
或者甚至在表格中有一个TEXT/BLOB,会产生潜在的性能影响?