<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        [MySQLView]最有意義的視圖view優化過程,從30分鐘到0.08秒

        來源:懂視網 責編:小采 時間:2020-11-09 13:36:18
        文檔

        [MySQLView]最有意義的視圖view優化過程,從30分鐘到0.08秒

        [MySQLView]最有意義的視圖view優化過程,從30分鐘到0.08秒:[MySQL View]最有意思的視圖view優化過程,從30分鐘到0.08秒 開發人員寫了一個view,select要30分鐘,讓我優化下,view如下: CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW view_offer_label AS SELECT o
        推薦度:
        導讀[MySQLView]最有意義的視圖view優化過程,從30分鐘到0.08秒:[MySQL View]最有意思的視圖view優化過程,從30分鐘到0.08秒 開發人員寫了一個view,select要30分鐘,讓我優化下,view如下: CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW view_offer_label AS SELECT o

        [MySQL View]最有意思的視圖view優化過程,從30分鐘到0.08秒 開發人員寫了一個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

        [MySQL View]最有意思的視圖view優化過程,從30分鐘到0.08秒
        開發人員寫了一個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` `ol2`
        -> WHERE ((`ol`.`OFFER_ID` = `ol2`.`OFFER_ID`) AND (`ol2`.`LABEL` = 'PROD'))
        -> ORDER BY `ol2`.`EFFECTIVE_DATE` DESC,`ol2`.`ID` DESC LIMIT 1));
        +----+--------------------+-------+-------+------------------------------------+-------------------+---------+---------------------------+--------+------------------------------------------+
        | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
        +----+--------------------+-------+-------+------------------------------------+-------------------+---------+---------------------------+--------+------------------------------------------+
        | 1 | PRIMARY | ol | index | NULL | offer_label_index | 1542 | NULL | 143299 | Using where; Using index |
        | 2 | DEPENDENT SUBQUERY | ol2 | ref | OFFER_LABEL_FKEY,offer_label_index | offer_label_index | 1534 | const,catalog.ol.OFFER_ID | 1 | Using where; Using index; Using filesort |
        +----+--------------------+-------+-------+------------------------------------+-------------------+---------+---------------------------+--------+------------------------------------------+
        2 rows in set (0.00 sec)

        看到有 Using filesort,要優化where后面的子判斷,優化如下:
        select max(ol2.ID)
        from offer_label ol2
        where ol2.LABEL = 'PROD'
        group by ol2.OFFER_ID
        order by ol2.EFFECTIVE_DATE DESC,ol2.ID DESC;
        mysql> explain select max(ol2.ID)
        -> from offer_label ol2
        -> where ol2.LABEL = 'PROD'
        -> group by ol2.OFFER_ID
        -> order by ol2.EFFECTIVE_DATE DESC,ol2.ID DESC;
        +----+-------------+-------+------+-------------------+-------------------+---------+-------+-------+-----------------------------------------------------------+
        | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
        +----+-------------+-------+------+-------------------+-------------------+---------+-------+-------+-----------------------------------------------------------+
        | 1 | SIMPLE | ol2 | ref | offer_label_index | offer_label_index | 767 | const | 71649 | Using where; Using index; Using temporary; Using filesort |
        +----+-------------+-------+------+-------------------+-------------------+---------+-------+-------+-----------------------------------------------------------+
        1 row in set (0.00 sec)

        有些不對勁,再仔細看了view的結構,恍然大悟:

        優化成如下樣子:

        CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW view_offer_label AS
        SELECT ol2.OFFER_ID, max(EFFECTIVE_DATE) EFFECTIVE_DATE
        FROM offer_label ol2
        WHERE ol2.LABEL = 'PROD'
        group by ol2.OFFER_ID ;


        執行結果為:

        21068 rows in set (0.08 sec)

        不到0.08秒,數據完全正確。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        [MySQLView]最有意義的視圖view優化過程,從30分鐘到0.08秒

        [MySQLView]最有意義的視圖view優化過程,從30分鐘到0.08秒:[MySQL View]最有意思的視圖view優化過程,從30分鐘到0.08秒 開發人員寫了一個view,select要30分鐘,讓我優化下,view如下: CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW view_offer_label AS SELECT o
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产91精品一区二区麻豆亚洲| 免费黄色大片网站| 国产91色综合久久免费| 中文字幕无码不卡免费视频| 噜噜嘿在线视频免费观看| 免费在线观看一级毛片| 亚洲高清专区日韩精品| 亚洲午夜成激人情在线影院| 亚洲免费网站观看视频| 永久免费无码日韩视频| 久久国产乱子伦精品免费看| 67194成是人免费无码| 亚洲成av人片在线观看天堂无码| 亚洲av无码国产精品夜色午夜| 亚洲国产中文在线视频| 国产精品无码亚洲一区二区三区| 国产日韩久久免费影院| 国产成人免费高清激情明星| 国产精品免费播放| 久久综合九九亚洲一区| 亚洲av日韩精品久久久久久a| a级精品九九九大片免费看| 免费成人福利视频| 亚洲第一永久AV网站久久精品男人的天堂AV | 免费看成人AA片无码视频羞羞网| 国产成人无码a区在线观看视频免费| 不卡精品国产_亚洲人成在线| 亚洲欧洲精品一区二区三区| 国产成人不卡亚洲精品91| 久久免费观看国产精品88av| 日本免费福利视频| 亚洲AV区无码字幕中文色| 亚洲av无码成人影院一区| 一级毛片免费观看不卡视频| 成在线人永久免费视频播放| 亚洲AV无码不卡在线播放| 韩国亚洲伊人久久综合影院| 久久精品无码专区免费青青| 亚欧洲精品在线视频免费观看| 手机看黄av免费网址| 2022中文字字幕久亚洲|