索引是为了提高数据库的检索效率,避免进行全局扫描的一种机制,与字典类似,快速定位到需要的元素位置;索引是针对字段来使用的
2023/11/15
1.索引的实现
Mysql中索引的实现一般使用B树或B+树,而非平衡二叉树
- B树中,节点可以存储键和数据。
- B+树中,叶节点包含所有键和数据,内部节点只包含键。这种结构使得范围查询更加高效,因为叶节点以链表形式相连。
补充一下:平衡二叉树的代表
- AVL树:对于查找密集型应用更优,因为它们更加平衡。
- 红黑树:在插入和删除操作更频繁的应用中表现更好,因为重新平衡的成本较低。
2.索引的分类
单列索引:
主键索引:每个主键自动创建;不可含空值
唯一索引:UNIQUE唯一约束列自动创建;可含空值
普通索引:普通字段索引
组合索引:
多个字段组合起来建立一个索引,顺序是很重要的
组合索引遵循最左前缀原则,只有包含了第一个字段时,才会生效
例如:组合索引{A,B,C}最好的检索方式是A或者AB或者ABC的方式
全文索引
对词语或词组进行索引,适用于大型文本型数据库
3.索引的建立
新建查询create index 索引名 on 表名(字段)
举个例子,我的原表是这样,现在我要查询"Ti Ka Man"
使用EXPLAIN解释我的查询过程
EXPLAIN SELECT * FROM cai WHERE name="Ti Ka Man"
结果如下: 查询了全表的数据一百行
现在我建立一个索引
CREATE INDEX nameindex ON cai(name)
再次查询,查询行数变为了1行,大大提高了检索效率