Mysql 具有多个文本列与单个文本列/中间文本列

Mysql 具有多个文本列与单个文本列/中间文本列,mysql,performance,Mysql,Performance,表中有多个文本列,而不是单个文本列/中间文本列?哪一个应该扩展得更好 例如: Table t : Col1 : {a:1} // .. could me larger than varchar 35565 Col2 : {b:1} // .. could me larger than varchar 35565 Col3 : {c:1} // .. could me larger than varchar 35565 vs 在se中,不会有太大的差异 什么能起作用: 您的应用程序逻辑。如果

表中有多个文本列,而不是单个文本列/中间文本列?哪一个应该扩展得更好

例如:

Table t :

Col1 : {a:1} // .. could me larger than varchar 35565
Col2 : {b:1} // .. could me larger than varchar 35565
Col3 : {c:1} // .. could me larger than varchar 35565
vs


在se中,不会有太大的差异

什么能起作用:

  • 您的应用程序逻辑。如果您经常需要选择“仅/搜索/更改A、B或C”,则最好将它们放在单独的列中
  • 索引

    • 你绝对不应该那样做。阅读,它解释了为什么这是一个可怕的想法。每个特定列必须包含原子值

      起初,将这些列合并在一起似乎比较容易,但最终你会后悔的。相信我,我去过那里。通过合并列,bug的风险呈指数级增长。您的数据库中可能还会有大量垃圾数据

      另一个问题是:您如何知道一个“列”(注意引号)在哪里结束,另一个从哪里开始?你会使用一个特殊的角色吗?当您希望该特殊字符出现在该文本中时会发生什么情况


      这太令人头痛了,不值得。用正确的方法做

      如果每次读取都需要所有列:mysql在磁盘上的文件查找次数是多少?是否应该减少文本列数?只是一个想法。如果你总是需要它们:是的,一个字段可以保存得更紧凑,读取得更快。除非使用表分段,否则在这三个字段中速度会更快;)这真的取决于很多因素。一般来说:遵循功能设计,看看数据代表什么。是一起的吗?把它放在一起。
      Col : {a:1, b:1, c: 1} // might be medium text to handle the extra size.