索引

唯一索引和聚簇索引 没直接的关系  具体百度两者定义

https://zhidao.baidu.com/question/1836190186249451860.html

聚簇索引只能有一个 唯一索引可以有多个

聚簇索引 快 因为叶子节点存的就是表记录 表记录太多了 也

唯一索引快 因为 找到了一条就不会继续找了 有点像 limit   不过 唯一索引 新增要校验唯一性 表数据很多时

 

聚簇索引 

1 唯一性

2 叶子节点 以页的形式 直接存储行数据  相对非聚簇索引的 InnoDB的叶子节点存主键(聚簇索引)值,MyISAM的叶子节点存记录指针 更快

 

组合索引 太多层 不好的地方  我猜 索引的每一个唯一组合都会对应一个虚拟的id  如五层 组合索引 那排列组合下 虚拟id 可能太多了好像 也不太对  最多也不会超过表的记录数

 

索引覆盖 using index  所需的查询

 

 

(1)首先指出一个误区,主键并不一定是聚集索引,只是在SQL SERVER中,未明确指出的情况下,默认将主键定义为聚集,而ORACLE中则默认是非聚集,因为SQL SERVER中的ROWID未开放使用。
(2)聚集索引适合用于需要进行范围查找的列,因为聚集索引的叶子节点存放的是有序的数据行,查询引擎可根据WHERE中给出的范围,直接定位到两端的叶子节点,将这部分节点页的数据根据链表顺序取出即可
(3)聚集索引尽量建立在值不会发生变更的列上,否则会带来非聚集索引的维护;(因为InnoDB引擎下 非聚簇索引 叶子节点存的是聚簇索引的值)
(4)尽量在建立非聚集索引之前建立聚集索引,否则会导致表上所有非聚集索引的重建;(因为InnoDB引擎下 非聚簇索引 叶子节点存的是聚簇索引的值)
(5)聚集索引应该避免建立在数值单调的列上,否则可能会造成IO的竞争,以及B树的不平衡,从而导致数据库系统频繁的维护B树的平衡性。聚集索引的列值最好能够在表中均匀分布。

==待理解

 

posted @ 2020-05-04 00:44  conn2019  阅读(111)  评论(0编辑  收藏  举报