mysql索引

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