- 索引原理:
- 通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据。
- b+ 树性质:
- 索引字段要尽量的小
- 索引的最左匹配特性
- 聚焦索引和辅助索引
- 聚焦索引相同点: 不管是聚焦索引还是辅助索引,其内部都是b+树的形式,即高度是平衡的, 叶子节点存放着所有的数据
- 不同点是:叶子节点是否存放着一整行的信息
- 聚焦索引:
- 如果有主键, 则以主键, 如没有则找第一个unique且not null 列, 作为聚簇索引
- 如果都没有, 则自己生成一个这样的id值, 有六个字节,并且是隐藏的
- 好处:
- 对主键的排序查找和范围查找速度非常快.
- 范围查询, 查找主键某一范围内的数据,可以通过叶子节点获取数据叶的范围,然后读取数据
- 辅助索引:
- 辅助索引的叶子节点不包含行记录的全部数据
- mysql索引管理:
- 功能:
- 索引的功能就是加速查找
- mysql中的 primary key , unique, 联合唯一也都是索引, 这些索引除了加速查找外还有约束功能
- 常用的索引:
- indexp普通索引
- 唯一索引:
- primary key
- unique
- 联合索引:
- primary key(id , name)
- unique ( id, name )
- index ( id, name )
- 创建索引:
- create table t1(id int, name char,age int,sex enum(‘male‘,‘female‘), unique key uid(id), index iname(name)); 创建了两个索引 unique和index
- create index ix_id on t1(id);
- alter table t1 add index ix_name(name)
- 正确使用索引:
- 范围问题,范围过大, 范围不明确 != > <
- 尽量使用区分度较高的列作为索引
- 索引列不能在条件中参与运算
- 最左前缀匹配原则:
- a = 1 and b = 2 and c > 3 and d = 4 : 这样d=4这个索引完全用不上,
- a = 1 and b = 2 and d = 4 and c > 3
- 3
mysql索引
原文:https://www.cnblogs.com/zhangjian0092/p/11688015.html