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

    索引失效的情况

    没有修不好的电脑
  • 相关阅读:
    js弹出文字
    javascript函数的使用
    php笔记-双引号内的变量会被解释,而单引号内的变量则原样输出
    单独编译源码树下的模块
    内核模块开机自动加载和黑名单
    [转]Linux中设置服务自启动的三种方式
    rpm打包
    APC to USB
    [转]创建一个虚拟盘
    编译打印输出重定向
  • 原文地址:https://www.cnblogs.com/duniqb/p/12702484.html
Copyright © 2011-2022 走看看