msg表有以下列
id 自增长 key
timing int型unixtimestamp
uid 用户id索引建了2个
Alter table msg ADD INDEX idx1(uid,timing);
Alter table msg ADD INDEX idx2(timing);当我执行
explain select * from msg where uid =111 order by timing desc 的时候,
期望使用到idx1中的uid,timing 但是结果是只用到了uid 难道order by 不用索引吗?(为了测试 表中插入了10万行 timing的值也尽量随机分布了)
id 自增长 key
timing int型unixtimestamp
uid 用户id索引建了2个
Alter table msg ADD INDEX idx1(uid,timing);
Alter table msg ADD INDEX idx2(timing);当我执行
explain select * from msg where uid =111 order by timing desc 的时候,
期望使用到idx1中的uid,timing 但是结果是只用到了uid 难道order by 不用索引吗?(为了测试 表中插入了10万行 timing的值也尽量随机分布了)
结果确实只用到了uid,然后根据timing来进行排序,这个是没问题的。
LZ可以把explain的结果贴出来。
explain select * from msg where uid =111 order by timing descid 1
select_type SIMPLE
table msg
type ref
possible_keys idx1
key idx1
key_len 4
ref const
rows 202350
Extra Using where
timing没用到