• 11 | 怎么给字符串字段加索引?


    使用前缀索引,定义好长度,就可以做到既节省空间,又不用额外增加太多的查询成本。

    于是,你就有个问题:当要给字符串创建前缀索引时,有什么方法能够确定我应该使用多长的前缀呢?

    实际上,我们在建立索引时关注的是区分度,区分度越高越好。

    因为区分度越高,意味着重复的键值越少。

    因此,我们可以通过统计索引上有多少个不同的值来判断要使用多长的前缀。

    mysql> select count(distinct email) as L from SUser;
    
    
    mysql> select 
      count(distinct left(email,4))as L4,
      count(distinct left(email,5))as L5,
      count(distinct left(email,6))as L6,
      count(distinct left(email,7))as L7,
    from SUser;

    当然,使用前缀索引很可能会损失区分度,所以你需要预先设定一个可以接受的损失比例,比如 5%。

    然后,在返回的 L4~L7 中,找出不小于 L * 95% 的值,假设这里 L6、L7 都满足,你就可以选择前缀长度为 6。

    在今天这篇文章中,我跟你聊了聊字符串字段创建索引的场景。我们来回顾一下,你可以使用的方式有:
    直接创建完整索引,这样可能比较占用空间;
    创建前缀索引,节省空间,但会增加查询扫描次数,并且不能使用覆盖索引;
    倒序存储,再创建前缀索引,用于绕过字符串本身前缀的区分度不够的问题;
    创建 hash 字段索引,查询性能稳定,有额外的存储和计算消耗,跟第三种方式一样,都不支持范围扫描。
  • 相关阅读:
    JDK的安装及环境变量部署
    计算机常用运行指令
    Linux基础2
    Linux基础1
    Oracle数据库基础(2)
    Oracle数据库的基础(1)
    测试用例的设计
    软件测试基础
    转化课-环境变量
    转化课-计算机基础及上网过程
  • 原文地址:https://www.cnblogs.com/lakeslove/p/12246549.html
Copyright © 2020-2023  润新知