zoukankan      html  css  js  c++  java
  • 索引原理

    两种存储引擎

    • MyISAM
      不支持事务,支持表锁和全文索引,查找效率极高,适合读多写少。
    • InnoDB
      支持事务,行锁,查询性能相对低,适合写多读少。

    索引分类

    • Hash
    • B-tree (基于平衡树)

    聚集索引和非聚集索引

    • 非聚集索引
      类似书的目录
    • 聚集索引
      类似书的页码数字

    MyISAM 的 B-tree (非聚集索引)

    • 规定:左边放小的,右边放大的
    • 索引保存的数据:
      1. 索引列的值
      2. 指向数据行的指针

    物理文件:

    • MYI:存储索引
    • MYD:存储数据
    • FRM:表结构定义等

    InnoDB 的 B-tree (聚集索引)

    InnoDB 中只有一个聚集索引

    1. 默认会用主键id作为聚集索引
    2. 如果没有主键,会取非空的唯一索引作为聚集索引
    3. 如果上面都没有,InnoDB 会维护一个唯一id来作为聚集索引

    物理文件:

    • IBD:既存索引又存数据。

    索引优缺点

    • 优点:
      • 提高检索速度,降低磁盘 IO
    • 缺点:
      • 索引也需要存储空间:索引实际就是一张表
      • 字段更新(INSERT, DELETE, UPDATE)会有性能损耗

    适合:

    • 频繁作为 where 条件的字段
    • 关联字段可以建索引,例如外键
    • order by,group by 的 column 可以建索引

    不适合:

    • where 条件中用不到的字段
    • 频繁更新的字段
    • 数据值分布比较均匀的
    • 数据量少的

    索引失效的情况

    没有修不好的电脑
  • 相关阅读:
    Gated Recurrent Unit (GRU)
    Long Short-Term Memory (LSTM)
    GBDT && XGBOOST
    记录一次网站打开卡--排故障过程
    linux下mysql5.5 5.6 5.7安装教程
    tomcat无法正常shutdown
    linux服务器被入侵的解决方法
    线上CPU 占用300%多-故障解决
    6流程控制-while
    7 流程控制-for序列 for字典
  • 原文地址:https://www.cnblogs.com/duniqb/p/12702484.html
Copyright © 2011-2022 走看看