聚集索引是否一定是唯一索引

 我来答
柒月黑瞳dae3
高粉答主

2015-11-12 · 说的都是干货,快来关注
知道大有可为答主
回答量:1.4万
采纳率:93%
帮助的人:1717万
展开全部
聚集索引并不一定是唯一索引。
主键是唯一的,所以创建了一个主键的同时,也就这个字段创建了一个唯一的索引, 唯一索引实际上就是要求指定的列中所有的数据必须不同。主键一唯一索引的区别:
1 一个表的主键只能有一个,而唯一索引可以建多个。
2 主键可以作为其它表的外键
3 主键不可为null,唯一索引可以为null。
1、聚集索引
(1)首先指出一个误区,主键并不一定是聚集索引,只是在SQL SERVER中,未明确指出的情况下,默认将主键定义为聚集,而ORACLE中则默认是非聚集,因为SQL SERVER中的ROWID未开放使用。
(2)聚集索引适合用于需要进行范围查找的列,因为聚集索引的叶子节点存放的是有序的数据行,查询引擎可根据WHERE中给出的范围,直接定位到两端的叶子节点,将这部分节点页的数据根据链表顺序取出即可;
(3)聚集索引尽量建立在值不会发生变更的列上,否则会带来非聚集索引的维护;
(4)尽量在建立非聚集索引之前建立聚集索引,否则会导致表上所有非聚集索引的重建;
(5)聚集索引应该避免建立在数值单调的列上,否则可能会造成IO的竞争,以及B树的不平衡,从而导致数据库系统频繁的维护B树的平衡性。聚集索引的列值最好能够在表中均匀分布
2、唯一索引
(1)再指出一个误区,聚集索引并不一定是唯一索引,由于SQL SERVER将主键默认定义为聚集索引,事实上,索引是否唯一与是否聚集是不相关的,聚集索引可以是唯一索引,也可以是非唯一索引;
(2)将索引设置为唯一,对于等值查找是很有利的,当查到第一条符合条件的纪录时即可停止查找,返回数据,而非唯一索引则要继续查找,同样,由于需要保证唯一性,每一行数据的插入都会去检查重复性
浪迹天涯的流星
2015-11-03 · 知道合伙人教育行家
浪迹天涯的流星
知道合伙人教育行家
采纳数:8922 获赞数:81536
对于基本办公软件比较擅长。

向TA提问 私信TA
展开全部
聚集索引决定了数据的物理存储循序 所以一个表只能有一个聚集索引。
不要求唯一 但一般建议在唯一的字段上用该索引才合理 才能增快查询效率。
SQL的主键默认为聚集索引 在有需要的时候也可指定为非聚集的。
即聚集索引和主键不是绝对绑在一起的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenfenggang99
2014-05-09 · TA获得超过1850个赞
知道大有可为答主
回答量:1746
采纳率:75%
帮助的人:1745万
展开全部
聚集索引决定了数据的物理存储循序 所以一个表只能有一个聚集索引
不要求唯一 但一般建议在唯一的字段上用该索引才合理 才能增快查询效率
SQL的主键默认为聚集索引 在有需要的时候也可指定为非聚集的
即聚集索引和主键不是绝对绑在一起的
追答
恩,对,答案来源。。。。。

因为很少建立这些索引,个人也不太确定,一般都是去建立主键,因为主键默认为聚集索引,所以就可以不用关心聚集索引 的问题了。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式