gpt4 book ai didi

mysql - MySQL 是否在磁盘上多次冗余存储相同的字符串?

转载 作者:行者123 更新时间:2023-12-01 00:35:03 25 4
gpt4 key购买 nike

如果我有一个大字符串,例如 "John",它在同一个表中存储了很多次:

 | Id | Name
|----|------------
| 1 | John
| 2 | John
| 3 | John
| 4 | Bob
| 5 | John

MySQL 是否曾经看到 "John" 在具有数百万行的表中多次存储,或者 "John" 是否会在磁盘上冗余存在数百万次?

最佳答案

是的,MySQL 冗余地存储字符串。

在表行中,MySQL 为每一行数据存储一次字符串。

但是在索引中,MySQL 将值存储一次,并使用一个主键列表来引用找到该值的行。所以在索引中,它确实减少了值并唯一地存储它们。

假设 MySQL 试图检测重复的值,并将它们存储一次。

它仍然需要在每一行上存储一些标识符,以指示先前使用的哪些值与该行相关联。

可能的唯一字符串的数量仍然很大,因此标识符本身必须非常大才能枚举它们。

假设您有一个 VARCHAR(255)。 How many possible strings can there be? n255 其中 n 是唯一字符的数量。因此,您还需要一个足够长的字符串标识符来表示可能值的数量。

因此,在一般情况下,尝试这样做毕竟不会节省太多空间。

关于mysql - MySQL 是否在磁盘上多次冗余存储相同的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55049082/

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