2017-06-13 11 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

は、max(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) 

私はそれはあなたが探しているものだと信じています。実際にパフォーマンスを向上させるかどうかはわかりませんが、理解しやすくなります。私はジョインの古いスタイルが実際には効率が悪いとは確信していません。読んだり読んだりするのが難しくなったり、製品の結合を簡単にすることができます。論理の他の部分で間接的に中和されている3つのテーブルの間に他の共通鍵があると、パフォーマンスに影響を与える可能性があります。

(編集:これはあなたが探していたものであるかどうか実際にはわからないが、あなたの質問を再読し、サブクエリに焦点を当てているようだ...私はそれで飛び出す問題は見られない。そのアドレス。)

関連する問題