首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql -如果一个列的索引被定义为唯一,那么它是冗余的吗?

问MySql -如果一个列的索引被定义为唯一,那么它是冗余的吗?
EN

Stack Overflow用户
提问于 2010-11-03 20:18:02
回答 2查看 259关注 0票数 1

如果将表定义为对列具有唯一约束,那么如果我们希望对该列进行索引以进行快速查找,是否还需要在该列上定义单独的索引?

例如,给定以下表索引:

代码语言:javascript
复制
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’是否多余?

(注意,unique约束跨越2列)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-03 20:19:33

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

但是,您的唯一约束包含两列(host_id, hash_pathqry),hash_pathqry在后面。

索引维护列的字典顺序,因此只在host_id的每个值中对hash_pathqry进行排序。

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

票数 4
EN

Stack Overflow用户

发布于 2010-11-03 20:19:58

no -如果您指定唯一的例如用户名varbinary(32) unique not null,那么MySQL会自动添加一个唯一的索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4086946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档