• 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
      • 表的字段顺序,固定长度的字段优先;
      • 组合索引代替多个单列索引;
      • 尽量使用短索引;
      • 使用连接来代替子查询;
      • 连表时注意条件类型需一致;
      • 索引散列值(重复少)不适合作为索引;
  • 相关阅读:
    Params参数的应用
    用反射动态创建委托
    Javascript中的Array的运用
    四个JS代码与jquery架构简单运用
    base 基本用法转载自(MSDN)
    Microsoft AJAX Library 新特性简单代码
    典型的委托的不同写法(转载)
    创建反射实例|反射过滤|反射搜索
    【软工】第1次个人作业
    【软工】第0次个人作业
  • 原文地址:https://www.cnblogs.com/raygor/p/13867157.html
Copyright © 2020-2023  润新知