• Python基础学习(41) 索引的原理 索引的具体操作


    Python基础学习(41) 索引的原理 索引的具体操作

    一、今日内容

    • 索引的原理
    • 索引的具体操作

    二、索引的原理

    MySQL的索引本质上是利用B+树来实现,用以加快查询速度;关于B+树的介绍,网上相关的介绍很多。如:https://www.cnblogs.com/tiancai/p/9024351.html,等;

    三、索引的具体操作

    1. 聚集索引和非聚集索引

      • 聚集索引(聚簇索引):将所有数据统一存放,InnoDB 有且必须有;
      • 非聚集索引(非聚簇索引、辅助索引):MyISAM和InnoDB都可以有且有多个;

      在InnoDB存储引擎中,主键会默认创建一个聚集索引,所以根据主键条件查询速度会更快;MyISAM只存在非聚集索引;聚集索引和非聚集索引的工作方式见:https://my.oschina.net/xiaoyoung/blog/3046779;

    2. 磁盘的预读性原理

      每一次读取硬盘的数据块都是固定的,如Linux每一次读取4096byte,称为一个block块;

    3. 索引的创建与删除

      • 创建主键会primary key同时创建聚集索引;
      • 创建唯一约束unique会同时创建辅助索引;
      • 添加一个索引:create index <Index> on <Table>(<Key>);

      添加索引的情况:

      • 创建表时;
      • create index <Index> on <Table>(<Key>);
      • alter table <Table> add index <Index>(<Key>);
    4. 正确使用索引

      • 查询的条件字段不是索引字段:对哪个字段创建了索引,就尽量使用这个字段作为条件查询;
      • 在创建索引的时候应该对区分度较大的列进行创建,1/10以下的重复率比较适合;
      • 范围越大越慢,范围越小越快;
      • like 'a%'速度块,like '%a'速度慢;
      • and较快,or较慢;
    5. 联合索引

      联合索引遵守最左前缀原则,如(id, name, email)只有命中了联合索引的最左前缀索引才能发挥作用,从出现范围开始索引失效;

    6. 注意事项

      • 避免使用select * ;
      • 使用count(*)
      • 创建表时尽量使用char来代替varchar
      • 表的字段顺序,固定长度的字段优先;
      • 组合索引代替多个单列索引;
      • 尽量使用短索引;
      • 使用连接来代替子查询;
      • 连表时注意条件类型需一致;
      • 索引散列值(重复少)不适合作为索引;
  • 相关阅读:
    Python 生成器
    Python 切片
    Visual Studio Code编辑器使用
    linux常用命令
    python selenium学习笔记
    selenium+chrome driver 报错处理 (Driver info: chromedriver=2.45.615291 (ec3682e3c9061c10f26ea9e5cdcf3c53f3f74387),platform=Windows NT 10.0.17763 x86_64)
    python+uiautomator2+fiddler 自动化测试学习总结
    我的第一篇博客
    计算机网络差错控制基本方法
    计算机网络复习笔记(简略)
  • 原文地址:https://www.cnblogs.com/raygor/p/13867157.html
Copyright © 2020-2023  润新知