索引(index):是帮助数据库高效获取数据的数据结构 。
简单来讲,就是使用索引可以提高查询的效率。
优点:
-
提高数据查询的效率,降低数据库的IO成本。
-
通过索引列对数据进行排序,降低数据排序的成本,降低CPU消耗。
缺点:
-
索引会占用存储空间。
-
索引大大提高了查询效率,同时却也降低了insert、update、delete的效率。
结构
通常默认Mysql索引结构为B+树索引(多路平衡搜索树 )
B+树(多路平衡搜索树)
B+Tree结构:
-
每一个节点,可以存储多个key(有n个key,就有n个指针)
-
节点分为:叶子节点、非叶子节点
-
叶子节点,就是最后一层子节点,所有的数据都存储在叶子节点上
-
非叶子节点,不是树结构最下面的节点,用于索引数据,存储的的是:key+指针
-
-
为了提高范围查询效率,叶子节点形成了一个双向链表,便于数据的排序及区间范围查询
语法
创建索引
create [ unique ] index 索引名 on 表名 (字段名,... ) ;
eg: 为tb_emp表的name字段添加名为idx_emp_name的索引
create index idx_emp_name on tb_emp(name);
查看索引
show index from 表名;
删除索引
drop index 索引名 on 表名;