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 条件中用不到的字段
    • 频繁更新的字段
    • 数据值分布比较均匀的
    • 数据量少的

    索引失效的情况

    没有修不好的电脑
  • 相关阅读:
    origin 8.5 曲线拟合,延长曲线范围
    赤手空拳编写C#代码
    Vmware 10安装MAC OS X 10.9备忘
    Contest 1445
    Contest 1428
    Contest 1435
    Contest 991
    CSP-SJX2019 解题报告
    【BZOJ4817】【SDOI2017】树点染色
    codeforce 804B Minimum number of steps
  • 原文地址:https://www.cnblogs.com/duniqb/p/12702484.html
Copyright © 2011-2022 走看看