• MySQL松散索引扫描与紧凑索引扫描


    什么是松散索引?

    答:实际上就是当MySQL 完全利用索引扫描来实现GROUP BY 的时候,并不需要扫描所有满足条件的索引键即可完成操作得出结果。

    要利用到松散索引扫描实现GROUP BY,需要至少满足以下几个条件:
    ◆ GROUP BY 条件字段必须在同一个索引中最前面的连续位置;
    ◆ 在使用GROUP BY 的同时,只能使用MAX 和MIN 这两个聚合函数(新版本支持更多);
    ◆ 如果引用到了该索引中GROUP BY 条件之外的字段条件的时候,必须以常量形式存在;


    为什么松散索引扫描的效率会很高?

    答:因为在没有WHERE 子句,也就是必须经过全索引扫描的时候, 松散索引扫描需要读取的键值数量与分组的组数量一样多,也就是说比实际存在的键值数目要少很多。而在WHERE 子句包含范围判断式或者等值表达式的时候, 松散索引扫描查找满足范围条件的每个组的第1 个关键字,并且再次读取尽可能最少数量的关键字。

    什么是紧凑索引?

    答:紧凑索引扫描实现GROUP BY 和松散索引扫描的区别主要在于他需要在扫描索引的时候,读取所有满足条件的索引键,然后再根据读取的数据来完成GROUP BY 操作得到相应结果。

  • 相关阅读:
    线程池3种终止方式比较
    SQL Update多表联合更新的方法
    SQL SERVER 表添加新字段
    JSONObject
    char码值对应列表大全
    JSONOjbect,对各种属性的处理
    Spring MVC ajax提交方式
    docker 初学者 安装 命令
    VMware虚拟机安装CentOS7 设置Nat网络 (超详细)
    关于 i++ 和 ++ i
  • 原文地址:https://www.cnblogs.com/shamo89/p/8968676.html
Copyright © 2020-2023  润新知