gpt4 book ai didi

Mysql:varchar 的部分索引

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

我想在数据库中做一些索引优化。

我看到在 varchar 32 字段上有一个索引,在 varchar 100 字段上有一个索引。

例如 varchar 32 包含一个 id(可能是用户 id 或其他什么,比如这个字符串 60c487df-38e8-1c79-da00-561799874092),varchar 100 包含短字符串,例如 pluto 或 pippo。 (我知道,这个字段必须缩小)

第一个问题)对于这些字段,删除索引并创建部分索引是否正确?

例如,将varchar 32 上的索引大小减少到前8 个字符,帮助mysql 更快地找到行? (分析较小的索引)。有缺点吗?

第二个问题)字段 x varchar 100 有一个完整索引(不是部分索引),当我添加带有 x="pippo"的行时,mysql 是如何工作的? Mysql 会填充(或保留)该列索引的所有 100 字节吗?

提前致谢。

最佳答案

我怀疑是否有任何理由进一步“优化”您的索引。减少索引中字段的大小确实减少了索引的大小。但是,除非您处于内存受限的环境中,否则它们只会增加不必要的复杂性。

部分索引不会让 MySQL “更快地找到行”。仅比较前 8 个字节不足以找到一行,因此 MySQL 必须做更多的工作才能找到给定的行。

varchar() 数据类型是一个可变 长度的字符字段。这意味着它只存储字符串中的数据,加上第一个或两个字节的长度。无论值是在表中还是在索引中都是如此。

您应该保留现有的索引并寻找其他方法来优化您的系统——如果性能是一个问题的话。

关于Mysql:varchar 的部分索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42531361/

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