索引问题:a=xxx and b=xxx and id
id是主键,a,b是普通字段,那么查询语句:
select * from my_table where a = xxx and b = xxxx and id<xxxx
这样的查询,我应该建立一个什么索引?是 (a, b) 还是 (a, b, id)。
引擎是innodb,所以索引叶子节点的值就是主键(id)了。但这个id不在内部节点,所以不能用来排序。
纠结就在这里:如果我只有(a, b)索引,那么上面的查询语句需要把所有满足 a=xxx and b=xxxx 的记录加载到内存。我是不是应该建立(a, b, id) 索引?