刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
MySQL中的索引可以以一定顺序引用多个列,这种索引叫做复合(联合)索引。
如果表 Ta 中存在索引 A、B、(C、D)
SELECT * FROM Ta WHERE E = 'F1' AND A ='10001';
若没有按照索引顺序时,mysql查询优化器会自动的调整顺序来使用定义好的索引,如果我们将where中的条件顺序颠倒效果是一样的。
SELECT * FROM Ta WHERE A ='10001' AND B = 'B001' ;
当查询条件精确匹配索引的左边连续一个或几个列时,只用到了索引的第一列前缀。
SELECT * FROM Ta WHERE D = 'D001' ;
由于不是最左前缀,索引这样的查询显然用不到索引。
SELECT * FROM Ta WHERE C LINK 'C001%' ;
此时可以用到索引,如果通配符%不出现在开头,则可以用到索引。
对于范围条件查询,MYSQL无法再使用范围后面的其他索引列了。但对多个等值条件查询则没有这样的限制。
如果查询条件中含有函数或表达式,则MySQL不会为这列使用索引(虽然某些在数学意义上可以使用)。
本文链接:说说复合索引之最左前缀原理 ?
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!