zoukankan      html  css  js  c++  java
  • mysql组合索引顺序参考

    问题背景 : 

    当我们需要创建一个组合索引, 索引的顺序对于效率影响很大, 怎么确定索引的顺序;

    解决方法 : 

    我们应该依据字段的全局基数和选择性, 而不是字段的某个具体的值来确定;

    表结构 : 

    dc_listing

    代码 : 

    SELECT
      COUNT(DISTINCT accountId) / COUNT(*) AS accountId_sel,
      COUNT(DISTINCT userName) / COUNT(*) AS userName_sel,
      COUNT(*)
    FROM
      dc_listing

    结果: 

    可以看到accountId的选择性更高, 所以我们应该讲accountId这个字段放在组合索引前面

    存在问题 : 

    对于一些特殊的值, 比如超级用户, 如果他满足大部分的查询条件, 即这个基数对这个值可以说是无效的参考.

    避免这种问题, 只能从代码层面屏蔽, 区分这类数据合组, 禁止针对这类值进行这个查询;

    参考 msyql高性能 5.3.4 章节, 有更详细例子

  • 相关阅读:
    s2-032批量脚本
    javascript 1
    threading模块和queue模块实现程序并发功能和消息队列
    Python标准库06 子进程 (subprocess包)
    常用服务对应的正则
    re
    requests
    198. 打家劫舍
    746. 使用最小花费爬楼梯
    70. 爬楼梯
  • 原文地址:https://www.cnblogs.com/meibao/p/6204368.html
Copyright © 2011-2022 走看看