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