Loading

MySQL 用IN覆盖不在WHERE中的子句

用IN组合索引触发WHERE最左前缀

假如(sex,country,age),(sex,country,region,age)和(sex,country,region,city,age)

这样的组合索引,可以通过IN(),来重用索引而不是建立大量新的组合索引

这种技巧不能滥用 

每额外增加一个IN()条件,优化器需要做的组合都将以指数形式增加

 

优化器则会转化成 4*3*2 这种组合,如果真实数据的组合数达到上千则需要特别小心

 

posted @ 2021-10-26 09:34  BigBender  阅读(36)  评论(0编辑  收藏  举报