我发现一个很奇怪的事情。例如,表t1除了主键外有a,b,c三个字段,类型都是int,然后创建abc的联合索引,最左匹配原则是说要从第一个字段开始走索引,但经过我实际测试,select * from t1 where b=**和select * from t1 where c=**
,这两个SQL语句都能走联合索引。
但是,如果a,b,c的类型改为varchar,上述SQL语句就不能走索引了,我真的搞不懂,这是为什么,这不符合最左匹配的原则啊!
我发现一个很奇怪的事情。例如,表t1除了主键外有a,b,c三个字段,类型都是int,然后创建abc的联合索引,最左匹配原则是说要从第一个字段开始走索引,但经过我实际测试,select * from t1 where b=**和select * from t1 where c=**
,这两个SQL语句都能走联合索引。
但是,如果a,b,c的类型改为varchar,上述SQL语句就不能走索引了,我真的搞不懂,这是为什么,这不符合最左匹配的原则啊!
5 回答3.4k 阅读✓ 已解决
3 回答3.7k 阅读✓ 已解决
5 回答1.4k 阅读
2 回答2.1k 阅读
3 回答2.1k 阅读
1 回答3.6k 阅读
4 回答1.3k 阅读
如果你改成varchar,那么你
select * from t1 where b="xx"
b这个值是string类型吗