gpt4 book ai didi

mysql - MySQL中是否可以有基于函数的索引?

转载 作者:IT老高 更新时间:2023-10-28 12:55:17 24 4
gpt4 key购买 nike

我记得在 Oracle 中可以基于函数进行索引,例如SUBSTRING(id,1,8).

MySQL 支持这个吗?如果没有,有没有其他选择?

最佳答案

不,不是一般意义上的,我什至不相信 5.6(首次编写此答案时的最新版本)具有此功能。值得注意的是8.0.13及以上版本现在支持functional indexes ,让您无需下文所述的触发方法即可实现您所需要的。

如果您运行的是旧版本的 mysql 可能只使用列的 leading 部分(此功能有已经存在了很长时间),但不是从第二个或后续字符开始,或者任何其他更复杂的函数。

例如,以下使用名称的前五个字符创建索引:

create index name_first_five on cust_table (name(5));

对于更复杂的表达式,您可以通过在其中包含可索引数据的另一个列来实现类似的效果,然后使用插入/更新触发器来确保它被正确填充。

除了为冗余数据浪费空间之外,这几乎是一回事。

而且,虽然它在技术上违反了 3NF,但通过使用触发器来保持数据同步可以缓解这种情况(这通常是为了提高性能)。

关于mysql - MySQL中是否可以有基于函数的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10595037/

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