【已解决】关于前缀索引的几个问题

Viewed 56

1、怎么判断是否命中了前缀索引?
2、最前面是where 1=1是否会导致无法命中前缀索引?
3、前缀索引必须是高基数列吗?
4、有一个高基数列,varchar类型,长度50-100(前缀索引会截取前20个字符,而且前20个字符大部分一样),这个字段作为key还是分桶字段好?

1 Answers
1. 开启profile,在profile的搜索KeyRanges可以看到是否命中
2. 如果过滤条件中包含前缀索引字段,优化器会自动调整过滤条件顺序来命中前缀索引
3. 不一定,但高基数列的加速效果更好
4. 如果前20个字符大部分一致那对加速查询并没有多大作用,建议作为分桶字段