索引
两大类
1.聚集索引(也有人叫聚簇索引,也可以叫做一级索引)
定义:存储该索引的一行记录的值
一张表有且只有一个聚集索引
规则如下:
(1)如果表定义了主键,则主键就是聚集索引
(2)如果表没有定义主键,则会找一个唯一非空的索引做聚集索引
(3)都没有,InnoDB会创建一个隐藏的row-id作为聚集索引
2.非聚集索引(普通索引,也被称为二级索引)
定义:存储该索引的主键,和该字段的值。
(例如:定义了id为主键,age为普通的索引。那么通过 age索引 可以一次查询出id和age的值)
例如:
SELECT
AVG( avg ) AS 平均年龄
FROM
test_tab
WHERE
name LIKE '张%'
假如 name 与 age 都包含在索引里面。 查询就不需要去检索表中的数据。
覆盖索引
定义:就是我们的select id,age from tb_name where age=18;返回值覆盖了索引值,就是索引覆盖。