gpt4 book ai didi

sql - MySql - 如果列上的索引被定义为唯一的,它是否是多余的?

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

如果一个表被定义为对列有唯一约束,如果我们希望它被索引以便快速查找,是否还需要在该列上定义一个单独的索引?

例如,给定下表索引:

mysql> show index from FRONTIER;
+----------+------------+-------------------------+--------------+--------------+-----------+-------------+----------+--------+------+-------------+---------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+----------+------------+-------------------------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+
| FRONTIER | 0 | PRIMARY | 1 | ID | A | 0 | NULL | NULL | | BTREE | |
| FRONTIER | 0 | uniq_cnstr | 1 | HOST_ID | A | 0 | NULL | NULL | | BTREE | |
| FRONTIER | 0 | uniq_cnstr | 2 | HASH_PATHQRY | A | 0 | NULL | NULL | | BTREE | |
| FRONTIER | 1 | I_FRONTIER_HASH_PATHQRY | 1 | HASH_PATHQRY | A | 0 | NULL | NULL | | BTREE | |
+----------+------------+-------------------------+--------------+--------------+-----------+-------------+----------+--------+------+------------+---------+

给定唯一约束“uniq_constr”,索引“I_FRONTIER_HASH_PATHQRY”是否冗余?

(注意唯一约束跨越2列)

最佳答案

唯一索引也是普通索引,无需创建单独的非唯一索引。

但是,您的唯一约束涵盖两列 (host_id, hash_pathqry)hash_pathqry 位于尾部。

索引维护列的字典顺序,因此 hash_pathqry 仅在 host_id 的每个单个值内排序。

因此,您已经拥有的唯一索引不会改进 HASH_PATHQRY 上的查找。 I_FRONTIER_HASH_PATHQRY 仍然是必需的。

关于sql - MySql - 如果列上的索引被定义为唯一的,它是否是多余的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4086946/

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