# 简介

本文主要讲解索引的具体工作原理以及代价,如何正确的建立索引才能使查询变快。在阅读本文前,请一定保证对之前更新的内容(B + 树索引)理解明白。

现在我们先创建一个表,之后方便举例

create table single_table (
    id int not null auto_increment
    key1 varchar(100),
    key2 int
    key3 varchar(100),
    key_part1 varchar(100),
    key_part2 varchar(100),
    key_part3 varchar(100),
    common_field varchar(100),
    primary key(id),
    key idx_key1(key1),
    unique key uk_key2(key2),
    key idx_key3(key3),
    key idx_key_part(key_part1,key_part2,key_part3)
) engine=InnoDB character set=utf8; 

# 简化 B + 树示意图

我们知道,B + 树的非叶子节点是目录项,它是为了定位下一层节点,直到在叶子节点找到对应的记录。其查询算法的本质还是在每个页中使用二分查找找到下一层对应的页。那么我们不如将 B + 树直接简化,只剩下叶子节点。