搜索

首页  >  问答  >  正文

mysql - 关于left join 和limit 索引的问题?


情况是这样,表record 大概300多W,表record_exten大概58W,图片是两条执行计划,可以看到order by的表不同,导致的查询计划的rows相差很大~ 请问是什么原因~~~

迷茫迷茫2786 天前684

全部回复(1)我来回复

  • 伊谢尔伦

    伊谢尔伦2017-04-17 13:03:32

    由于order by 不同的字段,导致两个查询中表record_exten所用的索引不同。显然索引PRIMARY 比DeptID要更加优化。

    order by 使用索引的情况

    1)默认情况是按顺序先取rownum,再order by
    2)如果order by 满足使用索引的情况,则先order by,再取rownum

    order by 使用索引是有条件的:

    1)ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序.
    2)ORDER BY中所有的列必须定义为非空.
    3)另外,如果ORDER BY中的列在where 条件中出现,也会使用索引

    详细查看:http://happymen001.iteye.com/blog/674764

    回复
    0
  • 取消回复