MySQL索引和字段类型,字段长度

记一次MySQL不走索引的原因

问题描述:

首先是两个表,user_infouser_identify_info,这两个表通过user_id关联。
user_infouser_id字段是int(11)类型,主键索引
user_identify_infouser_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

你可能感兴趣的:(MySQL索引和字段类型,字段长度)