mysql索引比较字符,字符类型的索引

索引 - 字符类型的索引 ¶

作者:KK

发表日期:2017.7.22

一般都不会轻易为字符串类型建索引 ¶

在常见应用中要建索引的一般是账号、邮箱、订单号这些

因为字符串的索引比较大,如果说数值型建索引后2000万条记录开始查询略显缓慢,那字符串索引可能会有700万条记录的时候就会查询略显缓慢(具体看表的情况和查询条件咯)

总之字符串索引的查询瓶颈会来得更快

LIKE比较前面带%号的时候不会使用索引 ¶

WHERE email LIKE '%qq.com'这样前面带%的LIKE比较查询时无法使用字符串索引

后面有百分号会使用索引,比如address LIKE '广东省%'

如果有name = '值'或者name like '值'都会使用到索引,其实此时like比较和等号比较的效果是一样的,

尽量减少key_len ¶

explain命令的分析结果中有个key_len嘛,它是越短对查询速度越有利

字符串类型的时候如果不包含中文,那该字段的排序规则尽量不要用utf8和gbk咯,个人建议使用ascii_bin

1066a0017beb81382c7fdd2f65848c8a.png

字符串索引的key_len计算规则 ¶

1. utf8编码 + 可以为null ¶

varchar(20) charset = utf8(1个文字3字节),key_len为63

计算公式:20 * 3 + 1(是否为null的标识) +2(字符长度)

2. utf8编码 + not null ¶

varchar(20) not null charset = utf8,key_len为62

计算公式:20 * 3 + 2(字符长度)

3. gbk编码 + 可以为null ¶

char(20) charset = gbk(1个文字2字节),key_len为41

计算公式:20 * 2 + 1(是否为null的标识)

4. gbk编码 + not null ¶

char(20) not null charset = gbk,key_len为40

计算公式:20 * 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值