美文网首页
14-mysql索引类型与数据存储

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

作者: 七层茅草屋 | 来源:发表于2019-11-13 22:37 被阅读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自己完成

    相关文章

      网友评论

          本文标题:14-mysql索引类型与数据存储

          本文链接:https://www.haomeiwen.com/subject/btgkictx.html