MySQL TEXT列与多个varchar列

6tdlim6h  于 2022-10-31  发布在  Mysql
关注(0)|答案(3)|浏览(164)

我有一些数据要存储在MySQL中。数据保证少于1024个字符,但不保证少于255个字符。
有两种解决方案。(1)使用text列存储文本(2)使用4个varchar列存储文本,分为4个部分
这两种方案的优缺点是什么?
我知道文本列会有额外的磁盘读取时间。但阅读4列,我不确定它是否比磁盘读取快。我也不确定实际存储大小的平均比较。

jum4pzuy

jum4pzuy1#

VARCHAR列最多可以包含65 535个字符.
如果字符集为utfmb4,则TEXT或VARCHAR列最多可索引767个字符.如果字符集为latin1,则最多可索引3072个字符.
如果我是您,我会使用单个VARCHAR(1023)列。

4uqofj5v

4uqofj5v2#

MySQL的InnoDB存储引擎将以相同的方式存储所有列,如果可能的话,尝试将它们放在同一个数据页面上,如果必要的话,溢出到额外的页面。
不管你是把你描述的长度的字符串存储在一列还是多列中,它们很可能都存储在同一个数据页上,所以无论用哪种方式存储字符串,都不会有额外的页被读取。
我认为你在描述一种微优化的尝试,它不会有什么不同。它只会使你的查询复杂化,因为你必须重新连接列。

cig3rfwq

cig3rfwq3#

KISS --一列。
至于TEXTVARCHAR(1024),可能没有足够的区别需要担心,它们的处理几乎是相同的,除了可索引性。
文本列将有额外的磁盘读取时间
这是错误的。列是否存储为“非记录”并不取决于此。
你会有数百万行吗?如果不是,不要担心磁盘空间。如果你确实需要担心磁盘空间,我们可以讨论压缩该列。(它是“文本”吗?)

相关问题