日期:2014-05-16  浏览次数:21037 次

where条件和order by后条件的索引问题
例如有两个字段

id datatime

若为这两个字段建立联合索引

则在用条件 where id > 10 order by datatime desc 查询时

会用到联合索引中的id 还是 id和datatime作为索引

谢谢

------解决方案--------------------
如果用联合索引,由于你的order by字段是datetime,而where中的id是大于,所以还是要filesort,还不如只用id索引,再filesort排序。如果where中改成id=3,就是用的联合索引,而不必再去filesort
------解决方案--------------------
如果你有id ,inputtime ,id_inputtime 3个索引
就要看你的条件语句了,
如果你的inputtime 列足够简单,ID > 条件小 ,肯定走id,如果没有id索引,走id_inputtime ,反之走inputtime
如果你的语句是id=1 and inputtime =2 或者 id =2 order by inputtime 这样走id_inputtime

看情况,mysql优化器自己会走的 ,要分析
------解决方案--------------------
只会用到 ID 索引。