转换子查询以加入帮助

时间:2017-06-13 16:46:11

标签: sql join subquery

我是我的子查询在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)

1 个答案:

答案 0 :(得分: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)

我相信这就是你要找的东西。我不能说它是否会真正提高性能,虽然它肯定会让它更容易理解。我不确定旧的连接方式实际上效率较低;更难阅读/更容易与产品结合。

也就是说,如果在逻辑的其他部分中间接中和的三个表之间存在其他公共密钥,则可能会对性能产生影响。

(编辑:实际上不确定这是否是您正在寻找的,重新阅读您的问题,您似乎专注于子查询......我没有看到任何问题跳出来,需要更多细节来解决这一点。)