在mysql中,在使用排序limit时出现了问题。如下图。
在表zj_score_change中建了一个唯一索引UNIQUE KEY `uni_key` (`uid`,`change_time`,`reason`)。这就是出问题的关键。
下面是两句sql的执行计划。
可知在执行select * from zj_score_change where uid = 9368955 order by change_time desc时没有使用索引,而是文件排序,而执行另外一个sql时则使用了索引,而使用该索引时的顺序和文件排序时的顺序是不同的,所以会出现如上的问题。