建立联合索引(id,name,age),索引里数据结构为order by id, name,age:
id | name | age |
1 | a | 3 |
2 | b | 2 |
3 | aaa | 2 |
4 | bbb | 1 |
5 | bbb | 2 |
最左原则,建立了(id),(id,name),(id,name,age)三个索引列,
id:此列是全局有序的,所以单独使用id可利用上索引
name:是相对有序,即根据id排序之后,再对name排序,相同的id再对name排序
age:是相对有序,先对id排序,再对name排序,再对age进行排序。
所以name和age并非全局有序,在没有id条件的情况下,不可能利用上索引。
name必须和id一起才有序,只要同时存在,无所谓顺序前后,name=* and id=1 也能利用上索引;
age必须和id、name同时存在才有序,只要三个字段同时存在,无所谓前后顺序,age=* and name=* and id=1 一样能利用上索引。
第一个全局有序,后面都是相对有序。