14-mysql索引类型与数据存储

2019-11-13  本文已影响0人  七层茅草屋

六星教育 - java-mysql优化1909

一、innodb索引和myisam索引存储数据的区别

  1. .frm共用数据结构
  2. myisam特点数据与索引分开存储
    1> MYD:存储数据,MYI:存储索引
    2> 普通索引和主键索引都是指向实际数据在磁盘中的存储位置
  3. innodb特点数据和索引没有分开
    1> .idb , .ibdata
    2> innodb索引是找->主键字段的索引再->通过主键字段去找实际磁盘存储位置
    3> innodb所有默认索引就是与主键作为联合索引
idx_gender(gender) =>idx_gender(gender, id)   //实例

在innodb中就是通过索引来实现行锁,不加索引就会转化为表锁

二、索引类型

  1. 主键索引:就是我们的主键
  2. 唯一索引:一个唯一字段建立的索引效率较高,唯一字段建立的索引一般为单索引
  3. 单索引:单个字段建立的索引
  4. 联合索引:多个字段建立的索引
  5. 全文索引:针对于中文进行分词的搜索
  6. 覆盖索引:是所有查询sql中追求的索引效率的完美使用:直接根据索引获得数据,不需要再去磁盘中读取数据

三、回表

  1. 主要是普通索引问题,innodb
  2. sql查询的时候使用到普通索引,获取数据只要不存在与索引中的情况就会出现回表
  3. 回表:通过普通索引再去查主键索引,最后到磁盘中查询数据

四、hash索引

  1. MySQL根据字段进行hash计算->生成字符串:磁盘数据地址
  2. xxxx(字段) => hash算法 => 32,64字符串
  3. 使用:
    1、join查询的关联
    2、单独唯一条件查询
    3、字段少于其他的字段关联查询
  4. 特点:无序,离散,效率高,但不能进行范围查询
  5. 创建联合hash索引,必须字段都要有
  6. 根据查询字段的频率创建,这是由innodb自己完成
上一篇 下一篇

猜你喜欢

热点阅读