gpt4 book ai didi

mysql - MySQL 表的外键中声明的列后面的括号中的数字代表什么?

转载 作者:搜寻专家 更新时间:2023-10-30 23:47:42 24 4
gpt4 key购买 nike

前几天我遇到了一个 MySQL (5.0.45-community-log) 表,它在打印“SHOW CREATE TABLE”语句后生成了如下 key :

KEY `idx_object_relation_3` (`object_id`,`object_type`(4),`status`,`user_type_id`,`created_datetime`)

谁能向我解释一下 KEY 定义中的“(4)”是做什么的?它是否限制了从“object_type”中检索的字符数以及 TINYINT(1) 的“1”参数的功能?

我面临的更大问题是这张表被复制到不同环境(如开发、暂存、测试、生产等)的几个数据库中,并且只有在其中一个环境中定义了这个 KEY。尝试删除 key 导致几个小时内没有任何反应,然后连接断开。就此表而言,仅此一个环境中的性能太慢以至于无法使用(尽管该表有 5,453,757 条记录)。在未定义此 KEY 的环境中涉及此表的操作以可接受的速度运行。关于此表,环境/数据库之间没有其他区别。

最佳答案

通常像 (4) 这样的提示表示只有该字段的前 4 个字母被索引。有时字段太长而无法完整索引,因此您需要关注一个子集。

这对 UNIQUE 类型的索引产生了巨大的影响,因为它只会对前 N 个字符强制执行唯一性。如果您只关心顺序,这是一个优化技巧。

关于mysql - MySQL 表的外键中声明的列后面的括号中的数字代表什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26239345/

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