Sql server 2008 r2 muli联接子查询的性能不佳

Sql server 2008 r2 muli联接子查询的性能不佳,sql-server-2008-r2,Sql Server 2008 R2,有人能帮我解答这个问题吗。当通过web应用程序生成相关报告时,由于响应时间超过30秒标准http请求超时,报告超时 select c.counterparty_shortname AS [Réference] ,cty.counterparty_type_name

有人能帮我解答这个问题吗。当通过web应用程序生成相关报告时,由于响应时间超过30秒标准http请求超时,报告超时

select   c.counterparty_shortname                                                       AS  [Réference]
        ,cty.counterparty_type_name                                                     AS  [Type ref]
        ,t.transaction_shortname                                                        AS  [transaction_shortname]
        ,mitigant_shortname
        ,(SELECT ISNULL(SUM(ISNULL(tce.outstanding_amount,0)),0) 
          from  transaction_credit_event tce
         where tce.transaction_id=t.transaction_id)                                     AS  [Montant impayé]
         ,(select count(t1.transaction_id)
        from [transaction] t1
        where t1.counterparty_id=c.counterparty_id)                                     AS  [Nbre affaire]
        ,(select  isnull(count(tce.credit_event_id),0)
        from transaction_credit_event tce 
        where tce.transaction_id=t.transaction_id  
        and isnull(tce.outstanding_amount,0)>0
        and tce.credit_event_type_id=51)                                                AS  [nbr impaye]
        ,TT.transaction_type_name                                                       AS  [Type Produit]
        ,isnull(cm1.value1_text,'')                                                     AS  [type garantie] 
        ,isnull(cm2.value1_text,'')                                                     AS [marque] 
        ,isnull(cm3.value1_text,'')                                                     AS [modele] 
        ,(select top 1 tmp1.payment_posting_date 
         from (select  pp.payment_posting_date                      
                      ,tce.transaction_id                                       
               FROM    payment_posting  pp
               inner JOIN transaction_credit_event tce 
               ON pp.credit_event_id=tce.credit_event_id) tmp1
         where tmp1.transaction_id=t.transaction_id
         order by tmp1.payment_posting_date desc)                                       AS [Date dernier paiement]
        ,fate_shortname                                                                 AS [sort]
        ,raf.recovery_action_fate_id
        ,ISNULL(t.outstanding_amount,0)                                                 AS [CRD]
        ,1                                                                              AS [ID]
        ,(select  isnull(count(tce.credit_event_id),0)
        from transaction_credit_event tce,[transaction] tt 
        where tce.transaction_id=tt.transaction_id 
        and  tt.counterparty_id=c.counterparty_id
        and isnull(tce.outstanding_amount,0)>0
        and tce.credit_event_type_id=51)                                                AS  [nbr impaye tiers]
        ,convert(date,dispatch_start_date,103)                                          AS [date debut]
        ,convert(date,dispatch_end_date,103)                                            AS [date fin]
        ,c.counterparty_type_id
        ,t.transaction_type_id


from counterparty c
inner join wf_task_dispatch w       on w.item_id=c.counterparty_id
inner join [transaction] t          on c.counterparty_id=t.counterparty_id
LEFT join transaction_recovery tr   on tr.counterparty_id=c.counterparty_id and tr.transaction_recovery_id=(select top 1 transaction_recovery_id from transaction_recovery where counterparty_id=c.counterparty_id order by idate desc)
LEFT join recovery_action_fate raf  on raf.recovery_action_fate_id=tr.recovery_action_fate_id
left join counterparty_type cty     on cty.counterparty_type_id=c.counterparty_type_id
left join [transaction_type] TT     on t.transaction_type_id = TT.transaction_type_id
inner join mitigant_transaction mt  on mt.transaction_id=t.transaction_id and mt.ddate is null
inner join mitigant m               on m.mitigant_id=mt.mitigant_id and mitigant_screen='asset' and m.ddate is null
left join constant_matrix cm1       on cm1.criteria1_text=m.regulatory_mitigant_type and cm1.constant_matrix_shortname='CAIN'  and cm1.ddate is null
left join constant_matrix cm2       on cm2.criteria1_text=m.valuation_frequency and cm2.constant_matrix_shortname='MARQ'  and cm2.ddate is null
left join constant_matrix cm3       on cm3.criteria1_text=m.valuation_source and cm3.constant_matrix_shortname='GMOD'  and cm3.ddate is null

其中select[dbo].FN_GetPhase=81

查看执行计划,并在缺少索引的地方提供索引。很抱歉,我无法更改表中的任何内容。只读。请有人帮忙。使用SSMS执行需要多长时间?执行计划是否指示查询的哪个部分占用的时间最多?您能将子查询从select中取出并放入FROM部分并连接到这些表吗?