mysql 索引前缀

需求:

  • 在创建索引的时候报错了 Specified key 'uniq_code' was too long; max key length is 767 bytes.

进程:

  • 查阅文档信息之后发现,索引创建是有长度限制的
  • 要解决这个问题有两个方案
    1 . 修正当前所需要创建索引的字段的长度比如原先是 varchar(200) 修正为 varchar(20), 但是这个行为可能会导致数据变更,这个需要先确认表中数据都是20以内的长度
    2 . 使用前缀索引,前缀索引就是取数据库里某一列的数据的前n 个字符来当索引,这个方案的关键在于怎么判定前缀的长度
  • 前缀的唯一比例最好和全列的唯一比例相近,越接近越好,查询语句如下
sql 复制代码
#获取全列的比例
SELECT COUNT(DISTINCT column) / COUNT(*) FROM table;
#获取前缀的比例
SELECT COUNT(DISTINCT LEFT(column, 19)) / COUNT(*) FROM table;
  • 但这个也会有个弊端,因为数据量是一直在增加的,到后面的时候可能这个前缀长度可能就不够了,所以会有需要再次维护的情况,所以最好还是在最开始的时候就限定好字段的长度,但是使用前缀可以更省空间,这也是一个优势
相关推荐
2301_816660217 分钟前
CSS实现盒子倒角不规则效果_利用border-radius多个值
jvm·数据库·python
为什么要做囚徒7 分钟前
MongoDB 设置开机自启
数据库·mongodb
李少兄8 分钟前
如何创建MySQL索引
数据库·mysql
2201_761040599 分钟前
CSS如何根据父级容器宽度调整子项_利用容器查询container选择器css
jvm·数据库·python
uNke DEPH11 分钟前
Redis 安装及配置教程(Windows)【安装】
数据库·windows·redis
weixin_4585801215 分钟前
如何在 Python Fabric 中正确执行 EdgeOS 配置命令
jvm·数据库·python
m0_7375393715 分钟前
mysql的理论和使用
数据库·mysql
ZC跨境爬虫17 分钟前
3D地球卫星轨道可视化平台开发 Day15(添加卫星系列模糊搜索功能)
前端·数据库·3d·交互·数据可视化
tjc1990100523 分钟前
SQL中如何处理GROUP BY的不可排序问题_ORDERBY与聚合
jvm·数据库·python
JoshRen26 分钟前
Python使用PyMySQL操作MySQL完整指南
数据库·python·mysql