记一次MySQL不走索引的原因
问题描述:
首先是两个表,user_info和user_identify_info,这两个表通过user_id关联。
user_info中user_id字段是int(11)类型,主键索引
user_identify_info中user_id是varchar类型,普通索引
执行结果如图,未使用到索引
image.png
解决:
将user_identify_info字段改为int(11)或者bigint类型,使用到索引
image.png
总结:
最后查到
1、字段是varchar类型,参数是int类型,不走索引
2、字段是varchar类型,参数是字符串,走索引
3、字段是int类型,参数是int类型,走索引
4、字段是int类型,参数是字符串,走索引
上面说的是字段类型对索引的影响,下面说字段长度。
添加列delivery_address 字段扩展到1000
image.png
为这个字段添加单列索引,报异常出来,索引最大长度是3072 bytes
image.png
mysql5.7不报错,但会自动将索引长度限制在768
image.png
mysql8单列索引最长也是768
image.png
复合索引总长度不能超过768
image.png







网友评论