一个优化问题: 语句如下,其中id为自增id,follow_time上有索引而且计划走了索引。不加desc 查询速度很快,但是加上desc后速度极慢,这是为什么呢?该怎么优化?
select id,follow_time from push_product_to_user as p where p.follow_time <= 1433087999 and p.follow_time >= 1430409600 ORDER BY p.id desc limit 0,10;
A:
1 ORDER BY p.id,可能会导致走id上的索引
2 follow_time上有索引而且计划走了索引,则表明查询是用此列上的索引进行的,没有利用id列上的索引,所以排序操作需要进行(但需要贴出执行计划,然后进行分析)
3 MySQL的DESC只是语法级别支持,优化器和存储引擎没有支持,内部处理时只是悄悄把DESC转为ASC,然后把处理结果倒序输出,所以DESC操作本身更耗时
4 但是,如果ASC很快而DESC很慢,需要再确认一下数据量有多少,然后再进一步确认