Kaynağa Gözat

07-06 有关聚簇索引

YWJL 2 yıl önce
ebeveyn
işleme
62f506894a
1 değiştirilmiş dosya ile 24 ekleme ve 2 silme
  1. 24 2
      mysql/mysql实战45讲.md

+ 24 - 2
mysql/mysql实战45讲.md

@@ -311,15 +311,37 @@ mysql> select * from tuser where name like '张%' and age=10 and ismale=1;
 
 **什么情况下才能用索引下推呢?**
 
+1. ICP 用于访问方法是 range/ref/eq_ref/ref_or_null,且需要访问表的完整行记录。
+2. ICP适用于 InnoDB 和 MyISAM 的表,包括分区的表。
+3. 对于 InnoDB 表,ICP只适用于二级索引。ICP 的目标是减少访问表的完整行的读数量从而减少 I/O 操作。对于 InnoDB 的聚簇索引,完整的记录已经读进 InnoDB 的缓存,使用 ICP 不能减少 I/O 。
+4. ICP 不支持建立在虚拟列上的二级索引(InnoDB 支持在虚拟列上建立二级索引)。
+5. 引用子查询、存储函数的条件没法下推,Triggered conditions 也没法下推。
+
+### 聚簇索引 与 非聚簇索引
+
+**聚簇索引 特征**
+
+1. 索引必须是唯一索引
+2. 叶子节点处存储的是整行数据
+
+**非聚簇索引 特征**
+
+1. 索引值必须为可不唯一?
+2. 叶子节点处储存的索引行跟主键
+
+InnoDB中,聚簇索引不一定是主键,但主键一定是聚簇索引。
+
+聚簇索引不一定是主键的原因是:聚集索引可能是第一个不允许为 null 的唯一索引,如果也没有这样的唯一索引,InnoDB 会选择内置 6 字节长的 ROWID 作为隐含的聚集索引。
+
 ## 小结
 
 1. 一张表有多个索引
 2. 一个索引对应一张B+树
 3. 树结点的key值就是某一行的主键,value是该行的其他数据。新建索引就是新增一个B+树,查询不走索引就是遍历主B+树。
 
+# 全局锁和表锁
 
-
-
+**根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表锁和行锁三大类**