<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      對于mysql優化之IN換INNER JOIN的案例分享

      [摘要]今天擼代碼時,遇到SQL問題:要將A表查詢的ID,匹配B表的ID,并將B表全部內容查詢出來:未優化前:MySQL [xxuer]> SELECT -> COUNT(*)->...
      今天擼代碼時,遇到SQL問題:

      要將A表查詢的ID,匹配B表的ID,并將B表全部內容查詢出來:

      未優化前:

      MySQL [xxuer]> SELECT 
          ->     COUNT(*)
          -> FROM
          ->     t_cmdb_app_version
          -> WHERE
          ->     id IN (SELECT 
          ->             pid
          ->         FROM
          ->             t_cmdb_app_relation UNION SELECT 
          ->             rp_id
          ->         FROM
          ->             t_cmdb_app_relation);
      +----------+
        COUNT(*)  
      +----------+
             266  
      +----------+
      1 row in set (0.21 sec)

      優化后:

      MySQL [xxuer]> SELECT 
          ->     count(*)
          -> FROM
          ->     t_cmdb_app_version a
          ->         INNER JOIN
          ->     (SELECT 
          ->         pid
          ->     FROM
          ->         t_cmdb_app_relation UNION SELECT 
          ->         rp_id
          ->     FROM
          ->         t_cmdb_app_relation) b ON a.id = b.pid;
      +----------+
        count(*)  
      +----------+
             266  
      +----------+
      1 row in set (0.00 sec)

      查看執行計劃對比:

      MySQL [xxuer]> explain SELECT 
          ->     COUNT(*)
          -> FROM
          ->     t_cmdb_app_version
          -> WHERE
          ->     id IN (SELECT 
          ->             pid
          ->         FROM
          ->             t_cmdb_app_relation UNION SELECT 
          ->             rp_id
          ->         FROM
          ->             t_cmdb_app_relation);
      +----+--------------------+---------------------+-------+---------------+---------+---------+------+------+--------------------------+
        id   select_type          table                 type    possible_keys   key       key_len   ref    rows   Extra                     
      +----+--------------------+---------------------+-------+---------------+---------+---------+------+------+--------------------------+
         1   PRIMARY              t_cmdb_app_version    index   NULL            PRIMARY   4         NULL    659   Using where; Using index  
         2   DEPENDENT SUBQUERY   t_cmdb_app_relation   ALL     NULL            NULL      NULL      NULL    383   Using where               
         3   DEPENDENT UNION      t_cmdb_app_relation   ALL     NULL            NULL      NULL      NULL    383   Using where               
        NULL   UNION RESULT         <union2,3>            ALL     NULL            NULL      NULL      NULL   NULL   Using temporary           
      +----+--------------------+---------------------+-------+---------------+---------+---------+------+------+--------------------------+
      4 rows in set (0.00 sec)
      MySQL [xxuer]> explain SELECT 
          ->     count(*)
          -> FROM
          ->     t_cmdb_app_version a
          ->         INNER JOIN
          ->     (SELECT 
          ->         pid
          ->     FROM
          ->         t_cmdb_app_relation UNION SELECT 
          ->         rp_id
          ->     FROM
          ->         t_cmdb_app_relation) b ON a.id = b.pid;
      +----+--------------+---------------------+--------+---------------+---------+---------+-------+------+--------------------------+
        id   select_type    table                 type     possible_keys   key       key_len   ref     rows   Extra                     
      +----+--------------+---------------------+--------+---------------+---------+---------+-------+------+--------------------------+
         1   PRIMARY        <derived2>            ALL      NULL            NULL      NULL      NULL     766   Using where               
         1   PRIMARY        a                     eq_ref   PRIMARY         PRIMARY   4         b.pid      1   Using where; Using index  
         2   DERIVED        t_cmdb_app_relation   ALL      NULL            NULL      NULL      NULL     383   NULL                      
         3   UNION          t_cmdb_app_relation   ALL      NULL            NULL      NULL      NULL     383   NULL                      
        NULL   UNION RESULT   <union2,3>            ALL      NULL            NULL      NULL      NULL    NULL   Using temporary           
      +----+--------------+---------------------+--------+---------------+---------+---------+-------+------+--------------------------+
      5 rows in set (0.00 sec)

      以上就是關于mysql優化之IN換INNER JOIN的實例分享的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清