mysql索引
-
从数据结构上划分
B-Tree索引
B+Tree索引:B+tree
Hash索引
… -
从创建的角度划分
单值索引
组合索引
前缀索引 / 后缀索引:当需要给长字符串加索引时,由于给该列加上索引反而会降低性能,可以给该列的值的前多少位(或者后多少位)加上索引,这个长度需要衡量,使得前缀索引的选择性接近于索引整个列。
… -
从存储结构划分
聚簇索引 :根据主键创建的索引,叶子节点存储了所有表数据
非聚簇索引:非主键索引,叶子节点存储了二级索引(也就是主键,方便回表)
在查询时使用加了索引的列查询,需要注意最左前缀匹配原则。主要针对于组合索引。
例如:
表 t_student中建立了一个组合索引(username, id_card, class_no)
id | username | id_card | class_no |
---|---|---|---|
1 | xiaoming | 001 | 01 |
2 | xiaohong | 002 | 01 |
3 | xiaolv | 003 | 02 |
select username, id_card, class_no from t_student where username=“xiaoming” and id_card=“001” and class_no=“01” 中where条件的列顺序要保持和索引顺序一致。