2017-06-13 57 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) 

我相信这是你在找什么。我不能说它是否会真正提高性能,但它肯定会使它更容易理解。我不确定旧的连接方式实际上效率较低;只是更难阅读/更容易使产品加入。这就是说,如果在逻辑的其他部分间接被中和的三个表之间还有其他常见键,那么这可能会对性能产生影响。 (编辑:其实不知道这是你在找什么,重读你的问题,你似乎专注于子查询...我没有看到任何问题跳出来,需要更多的细节地址)。