mysql前缀索引

  created  by  yangwcn {{tag}}
创建于 2020年05月15日 13:03:18 最后修改于 2020年05月15日 13:03:18

前缀索引,一种优化索引大小的解决方案

有时候需要索引很长的字符列,这会让索引变得大且慢。

通常可以索引开始的部分字符,这样可以大大节约索引空间,从而提高索引效率。但这样也会降低索引的选择性。

1. 前缀索引的有点

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

2.前缀索引的缺点

    2.1因为前缀索引无法完全等于判断,只是前缀匹配,所以可能需要扫描的所以数会增加

    2.2在特殊的查询里面

        select id,email from SUser where email='zhangssxyz@xxx.com';
        前缀索引需要回到 id 索引再查一下,因为系统并不确定前缀索引的定义是否截断了完整信息

3. 确定前缀索引长度

    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
    这里要根据不同情况确定能接受的损失比例

4. 其他索引方式

    1. 倒序排列

    2. hash



评论区
评论
{{comment.creator}}
{{comment.createTime}} {{comment.index}}楼
评论

mysql前缀索引

mysql前缀索引

前缀索引,一种优化索引大小的解决方案

有时候需要索引很长的字符列,这会让索引变得大且慢。

通常可以索引开始的部分字符,这样可以大大节约索引空间,从而提高索引效率。但这样也会降低索引的选择性。

1. 前缀索引的有点

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

2.前缀索引的缺点

    2.1因为前缀索引无法完全等于判断,只是前缀匹配,所以可能需要扫描的所以数会增加

    2.2在特殊的查询里面

        select id,email from SUser where email='zhangssxyz@xxx.com';
        前缀索引需要回到 id 索引再查一下,因为系统并不确定前缀索引的定义是否截断了完整信息

3. 确定前缀索引长度

    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
    这里要根据不同情况确定能接受的损失比例

4. 其他索引方式

    1. 倒序排列

    2. hash




mysql前缀索引2020-05-15yangwcn

{{commentTitle}}

评论   ctrl+Enter 发送评论