时间:2021-07-01 10:21:17 帮助过:36人阅读
开发人员写了一个view,select要30分钟,让我优化下,view如下:
开发人员select一下需要30多分钟:
21068 rows in set (1987.08 sec)
先解析一下:
mysql> explain SELECT `ol`.`OFFER_ID` AS `OFFER_ID`,`ol`.`EFFECTIVE_DATE` AS `EFFECTIVE_DATE`
看到有 Using filesort,要优化where后面的子判断,优化如下:
select max(ol2.ID)
有些不对劲,再仔细看了view的结构,恍然大悟:
优化成如下样子:
CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW view_offer_label AS
执行结果为:
21068 rows in set (0.08 sec)
不到0.08秒,数据完全正确。
bitsCN.com