gpt4 book ai didi

mysql - 在SQL表的列中分离大小相关数据是否更有效?

转载 作者:行者123 更新时间:2023-11-29 02:58:03 24 4
gpt4 key购买 nike

我有一个 MySQL 数据库表,其中有一列类型为 varchar(386)。我选择这个字符数是因为我事先统计了最长条目的字符数。我目前有 400,000 个条目,但预计会随着时间的推移而增加。

我进行了一些测试,发现大约 390,000 个条目仅使用 60 个或更少的字符,而最后 10,000 个条目使用最多 386 个字符。

我是否应该将 10,000 个大条目分到一个单独的表中?我将如何着手实现它?从长远来看,这会提高我的查询速度效率吗?

最佳答案

VARCHAR与表内联存储。 VARCHAR当大小合理时会更快,权衡取舍会更快取决于您的数据和硬件,您希望用您的数据对真实场景进行基准测试。

VARCHAR 中可以存储的最大有效字节数或 VARBINARY列的最大行大小为 65,535 bytes ,它在所有列之间共享。

例如,VARCHAR(255) column 可以容纳最大长度为 255 个字符的字符串。假设该列使用latin1字符集(每个字符一个字节),实际需要存储的是字符串的长度(L),加上一个字节来记录字符串的长度。对于字符串 'abcd' , L4并且存储要求是五个字节。如果同一列改为声明为使用 ucs2双字节字符集,存储要求为10个字节:'abcd'长度为8个字节,该列需要两个字节存储长度,因为最大长度大于255(最大510 bytes)。

对于更大的数据,考虑使用 TEXTBLOB . TEXTBLOB列在 NDB 中以不同方式实现存储引擎,其中每行在一个TEXT列由两个独立的部分组成。其中之一是固定大小 (256 bytes) , 并且实际存储在原始表中。另一个包含超过 256 bytes 的任何数据,它存储在一个隐藏的表中。第二个表中的行始终为 2,000 bytes长的。这意味着 TEXT 的大小列是 256如果size <= 256 (其中 size 表示行的大小);否则,大小为 256 + size + (2000 – (size – 256) % 2000) .

http://dev.mysql.com/doc/refman/5.6/en/storage-requirements.html

如果您很少在查询中使用该字段,则取决于您的数据库关系。例如附加信息。创建分隔表是不错的选择(规范化)。

注意事项: VARCHARCHAR 不同.如果您创建 VARCHAR(250)并插入 20上的字符然后它将需要5 bytes + LCHAR(250) 不同, 需要 250 bytes + L对于相同的条件。

关于mysql - 在SQL表的列中分离大小相关数据是否更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28184556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com