2017-06-13 36 views
0

我是我的子查詢是嚴重放緩我在MySQL中的完整查詢。我正在將原始查詢轉換爲在MySQL上工作,因爲我正在離開SQL Server,它已經很好地工作了。另一方面MySQL不太高興。想知道是否有人可以協助我爲轉換解決方案提供幫助,因爲我還不完全熟悉連接。謝謝!轉換子查詢加入幫助

select a.crm_ticket_details_detail, 
     crm_ticket_created_date, 
     crm_ticket_id, 
     crm_ticket_customer_id, 
     c.crm_assigned_user 
       from php_crm.crm_ticket, 
       php_crm.crm_ticket_details a, 
       php_crm.crm_assigned c 
       where crm_ticket_resolved_date is null 
       and crm_ticket_id = a.crm_ticket_details_ticket_id 
       and a.crm_ticket_details_type = 'issue' 
       and c.crm_assigned_ticket_id = crm_ticket_id 
       and c.crm_assigned_id = (select max(d.crm_assigned_id) 
             from php_crm.crm_assigned d 
             where d.crm_assigned_ticket_id = crm_ticket_id) 
+0

只是最大(d.crm_assigned_id)減慢您的查詢的子查詢? 如果有,是否有crm_assigned_id上的索引? –

回答

0
SELECT 
details.crm_ticket_details_detail, 
CT.crm_ticket_created_date, 
CT.crm_ticket_id, 
CT.crm_ticket_customer_id, 
ASSIGNED.crm_assigned_user 
FROM 
php_crm.crm_ticket CT (NONAME) 
INNER JOIN php_crm.crm_ticket_details DETAILS -- (A) 
    ON CT.crm_ticket_id = DETAILS.crm_ticket_details_ticket_id 
INNER JOIN php_crm.crm_assigned ASSIGNED -- (C) 
    ON CT.crm_ticket_id = ASSIGNED.crm_assigned_ticket_id 
WHERE 
crm_ticket_resolved_date IS NULL 
AND DETAILS.crm_ticket_details_type = 'issue' 
AND 
AND ASSIGNED.crm_assigned_id = (SELECT 
         max(d.crm_assigned_id) 
         FROM 
         php_crm.crm_assigned d 
         WHERE 
         d.crm_assigned_ticket_id = crm_ticket_id) 

我相信這是你在找什麼。我不能說它是否會真正提高性能,但它肯定會使它更容易理解。我不確定舊的連接方式實際上效率較低;只是更難閱讀/更容易使產品加入。這就是說,如果在邏輯的其他部分間接被中和的三個表之間還有其他常見鍵,那麼這可能會對性能產生影響。 (編輯:其實不知道這是你在找什麼,重讀你的問題,你似乎專注於子查詢...我沒有看到任何問題跳出來,需要更多的細節地址)。