码迷,mamicode.com
首页 > 数据库 > 详细

Mysql-Varchar类型的前缀索引应该选择多少长度

时间:2020-12-21 11:35:03      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:blog   src   精确   var   不同的   ima   多少   select   mysq   

背景

我们在优化MySQL时,需要考虑到创建索引,对字符型的列建立索引时,必须使用前缀索引,那么选择多大的长度合适呢?
数据表结构
技术图片

计算完整列的选择性

计算方式

select count(DISTINCT left(pu_id,3))/count(*) as a3,
count(DISTINCT left(pu_id,5))/count(*) as a5,
count(DISTINCT left(pu_id,9))/count(*) as a9,
count(DISTINCT left(pu_id,12))/count(*) as a12,
count(DISTINCT left(pu_id,14))/count(*) as a14,
count(DISTINCT left(pu_id,15))/count(*) as a15,
count(DISTINCT left(pu_id,16))/count(*) as a16 
from power_unit_state;

我们使用上面这种计算方式时,对待索引列进行left截取不同的字符长度并去重统计出现的次数并除以总条数得到前缀长度的选择性值,值越小,意味着如果建立对应长度的前缀索引,查询时将扫描到更多的数据。值越大,说明索引更精确。

计算结果分析

技术图片

可以看到,在选择前缀长度达到15的时候,值达到最大。在选择前缀长度达到16的时候,已经无法再提升了,那么我们就将对该列的索引长度定为15。

Mysql-Varchar类型的前缀索引应该选择多少长度

标签:blog   src   精确   var   不同的   ima   多少   select   mysq   

原文地址:https://www.cnblogs.com/yiweiblog/p/14142506.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!