开发人员写了一个view,select要30分钟,让我优化下,view如下:CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW view_offer_label AS
SELECT ol.OFFER_ID AS OFFER_ID,ol.EFFECTIVE_DATE AS EFFECTIVE_DATE
FROM offer_label ol
WHERE(
ol.ID =
(SELECT ol2.ID
FROM offer_label ol2
WHERE ((ol.OFFER_ID = ol2.OFFER_ID) AND (ol2.LABEL = 'PROD'))
ORDER BY ol2.EFFECTIVE_DATE DESC,ol2.ID DESC LIMIT 1
)
)
开发人员select一下需要30多分钟:21068 rows in set (1987.08 sec)
先解析一下:mysql> explain SELECT `ol`.`OFFER_ID` AS `OFFER_ID`,`ol`.`EFFECTIVE_DATE` AS `EFFECTIVE_DATE`
-> FROM `offer_label` `ol`
-> WHERE (`ol`.`ID` =
-> (SELECT `ol2`.`ID`
-> FROM `offer_label` `o
一个复杂的视图查询导致了30分钟的执行时间,通过优化子查询和调整GROUP BY语句,最终将查询时间降低到0.08秒,显著提升了数据库性能。
最低0.47元/天 解锁文章
360

被折叠的 条评论
为什么被折叠?



