根据实际文本区分度决定索引长度
在看java开发手册时,发现提到了索引长度与区分度(表示小白 !^^ ),如下:
【强制】在 varchar 字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度。
说明:索引的长度与区分度是一对矛盾体,一般对字符串类型数据,长度为20的索引,区分度会高达90%以上,
可以使用 count(distinct left(列名, 索引长度))/count(*)的区分度来确定。
索引长度与区分度矛盾关系
索引长度太短,那么区分度就很低,索引占内存越低,
索引长度太长,区分度就高,索引占内存越多,
所以需要找到一个平衡点;
计算公式
select count(distinct left(列名,索引长度))/count(*) from 表名;
该公式计算结果是一个浮点数,逐渐趋向1.如图(转载):
说明
在实际工作中并不要强求接近1,无特殊要求时,达到0.1就可以了.
详细内容可查看转载原文
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
