• mysql索引原理


    1、B+Tree

    索引的数据结果是B+Tree,它比BTree查询时,以更少的IO次数占优势。

    2、聚集索引与非聚集索引

    聚集索引:索引的逻辑顺序与磁盘上数据的物理顺序相同。(表中最多只有一个)

      比如ID(主键),和数据行顺序一致。

    非聚集索引:索引的逻辑顺序与磁盘上行的物理存储顺序不同,一个表中可以拥有多个非聚集索引。(表中可以有多个)

    3、索引之所以快的原因

    例子,表user(id,name,age)

    聚集索引:当我们指定了主键(id)时,就默认创建了聚集索引,B+Tree的节点中存放主键列的数据,叶子节点存放真实的物理数据行。

    非聚集索引:

      比如按照name创建索引:create index idx_name on user(name);

      此时的非聚集索引的‘节点会存放name列的值,然后叶子节点存放id(主键值),得到主键值就能唯一定位数据行。

      此时执行查询:

          (1) select  id,name from user where name = "张三";

          (2) select  name from user where name = "张三";

          此时,直接可以从非聚集索引获取查询数据,不会进行二次查询。

      但是,如果查询age字段,则会先查到id后,在根据id去查一遍。二次查询降低了查询效率。最好避免二次查询。

      解决:采用复合索引(覆盖索引) create index idx_name on user(name,age);

  • 相关阅读:
    python-Beautiful rose
    python-and和 or用法
    myspl数据库基础
    python 协程
    python-os 模块
    python-logging模块
    异常处理
    面向对象-类中的三个装饰器
    Flask初见
    django中的ContentType使用
  • 原文地址:https://www.cnblogs.com/xingrui/p/10762389.html
Copyright © 2020-2023  润新知