我是我的子查询在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 :(得分: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)
我相信这就是你要找的东西。我不能说它是否会真正提高性能,虽然它肯定会让它更容易理解。我不确定旧的连接方式实际上效率较低;更难阅读/更容易与产品结合。
也就是说,如果在逻辑的其他部分中间接中和的三个表之间存在其他公共密钥,则可能会对性能产生影响。
(编辑:实际上不确定这是否是您正在寻找的,重新阅读您的问题,您似乎专注于子查询......我没有看到任何问题跳出来,需要更多细节来解决这一点。)