一张百万级的表 和 一张小表的 JOIN 查询,加上 ORDER BY 该如何优化?
来源:7-7 特定SQL的查询优化

慕慕7652243
2018-07-06
SELECT `v_yy_yb021_ext`.typeid, `v_yy_yb021_ext`.title, `v_yy_yb021_ext`.orgid AS jgid, `v_yy_yb021_ext`.orgname AS jgmc, `v_yy_yb021_ext`.humanname AS author, `v_yy_yb021_ext`.ctime AS time, `v_yy_yb021_ext`.seq AS id, `v_yy_yb021_ext`.typename AS type FROM `human_famous` LEFT JOIN `v_yy_yb021_ext` ON `human_famous`.`hycode` = `v_yy_yb021_ext`.`hycode` AND `human_famous`.`humanid` = `v_yy_yb021_ext`.`humanid` WHERE `v_yy_yb021_ext`.`isvalid` = 1 AND `v_yy_yb021_ext`.`declaredate` >= '2016-10-06' ORDER BY `ctime` DESC LIMIT 0,10; 不加排序的话,执行时间为5s,加了排序之后,需要60s的时间。 where和orderby的字段都有索引。 EXPLAIN 输出如下: 1 SIMPLE human_famous index PRIMARY PRIMARY 132 2701 100 Using index; Using temporary; Using filesort 1 SIMPLE v_yy_yb021_ext ref hycode,declaredate,humanid,hycode_humanid,humanid_ctime hycode 67 vis_db.human_famous.hycode 2 2.5 Using where
写回答
1回答
-
sqlercn
2018-07-06
可以试试先在子查询中把需要的大表数据过滤出来,然后再和小表关联的方式。012018-07-06
相似问题