程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> [慢查優化]慎用MySQL子查詢,尤其是看到DEPENDENT SUBQUERY標記時

[慢查優化]慎用MySQL子查詢,尤其是看到DEPENDENT SUBQUERY標記時

編輯:MySQL綜合教程

案例梳理時間:2013-9-25



------  ------------------  ------  --------------  --------------------------------------  ------------  -------  ------  ------  -----------
     1  PRIMARY                   index           (NULL)                                  idx_gid  5        (NULL)  Using where
     2          index_subquery  id_shop_goods,idx_sid,idx_gid  idx_gid  5        func         1  Using where

status=0 group by gid; 得到一個大結果集 t1,其數據量就是上圖中的 rows=850672 了。

……即使這兩步查詢都用到了索引,但不慢才怪。

子查詢的執行效率居然受制於外層查詢的記錄數,那還不如拆成兩個獨立查詢順序執行呢。

,如下所示:

------  -----------  --------------  ------  -------------------------  -------------  -------  -----------  ------  -------------------------------
     1  PRIMARY            ALL     (NULL)                     (NULL)         (NULL)   (NULL)           30  Using temporary; Using filesort
     1  PRIMARY      g1              ref     idx_gid               idx_gid   5        g2.gid       1  Using where                    
     2  shop_goods  range   id_shop_goods,idx_sid  id_shop_goods  5        (NULL)           30  Using where; Using index      

):

sub_test 表中根據 gid 取得 fk_tid(2,3,4,5,6)記錄,

然後再到 test 中,帶入 tid=2,3,4,5,6,取得查詢數據。

 | film_actor | eq_ref | PRIMARY,idx_fk_film_id |

。(注:你不妨在我們的庫上試試看 SELECT goods_id,GROUP_CONCAT(cast(id as char))

何時子查詢是好的

參考資源:



@易度-潘俊勇: 許式偉的這個ppt,涵蓋了他所有對golang的理解,推薦大家閱讀: http://t.cn/zRI8tIH

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved