Using filesort表示为内存排序,而没有使用到索引。因为联合索引都是一个一个分离的B+树索引。比方说联合索引 (col1, col2,col3),我知道在逻辑上是先按照col1进行排序再按照col2进行排序最后再按照col3进行排序。引文使用了两个字段排序,虽然排序顺序一样,但是因为第一个字段是个范围值,MySQL需要聚合到所有数据在内存排序,也就是能保证times是顺序的,但是又要按照uid排序需要组合后在排序。同理能看出如果是排序是按照最左原则,在最后一个字段排序,且只是用一个字段排序是有效的,且不能夸字段。
1 2 3 4 5
select*fromtablewhere col1 < xx orderby col可以索引使用排序。 select*fromtablewhere col1 < xx orderby col2 不可以使用索引排序。 但是前边是定值的是可以排序:【MySQL在存储的按照col1进行排序再按照col2进行排序最后再按照col3进行排序】 select*fromtablewhere col1 == xx orderby col2 可以使用索引排序。 select*fromtablewhere col1 == xx orderby col2,clo3 不可以使用索引排序【需要组合col2,clo3数据后排序】。