文章目录
索引
1. 什么是索引
帮助存储引擎快速获取的数据的一种数据结构,是数据的目录,以空间换时间
2. 索引的分类
按数据结构分类
B+ Tree索引、HASH索引、Full-Text索引
- 有主键,默认使用主键作为聚簇索引的索引键
- 没有主键,选择第一个不包含NULL值的唯一列作为聚簇索引的索引键
- 上面两个都没有的情况下,自动生成一个隐式自增id列作为…
- 其他索引都属于辅助索引(二级索引、非聚簇索引)
- 创建的主键索引和二级索引默认属于B+ Tree索引
例:
CREATE TABLE `product` (
`id` int(11) NOT NULL,
`product_no` varchar(20) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`price` decimal(10, 2) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
(id为主键)
主键索引的B+ Tree:
叶子节点存放数据,非叶子节点只存放索引,每个节点里的数据按主键顺序存放。每一个叶子节点有两个指针,分别指向下一个叶子节点和上一个叶子节点,形成双向链表
数据库的索引和数据都存在硬盘,读取一个节点当作一次磁盘I/O操作。B+ Tree存储千万级数据只需要3-4层高度,即最多需要3-4次磁盘I/O。查询效率很高。
二级索引的B+ Tree:<