20150804客户sqlserver库查询sql执行慢的问题分析

本文分析了一例在SQL Server数据库中执行缓慢的查询问题。该查询在Oracle库中执行迅速,但在特定环境下耗时近半小时。问题在于一个庞大的中间结果集导致性能下降。通过优化逻辑,使用子查询和临时表策略,显著提高了查询效率。
摘要由CSDN通过智能技术生成

执行报表反接收操作时检查是否产生关联报表的sql查询。

这条脚本在oracle库都执行正常,执行速度可以控制在0.05s以内。


存在sql查询性能问题的客户情况:

1、操作系统

 阿里云 四核、14G内存。数据库服务器分配了10个G的内存。



2、Sql Server设置



3、业务数据:







4、客户出现性能的SQL

SELECT distinct r.FID AS ID,r2.FName AS SourceReport,                                   
 r2.FNumber AS SourceReportNumber,                                              
 tr.FName_l2 AS TreeName,                                            
 o.FName_l2 AS UnitName,                                             
 c.FName_l2 AS CurrencyName,                                         
 r.FPeriodType AS PeriodType,                                                   
 r.FYear AS FYear,                                                              
 r.FPeriod AS Period,                                                           
 r.FSourceType AS SourceType,                                                   
 r.FName AS ReportName,                                                         
 s.FLongNumber AS OrgLongNumber,                                                
 r.FCommittedStatus  AS CommittedStatus                                         
 FROM T_CSL_CslReport r                                                       
     INNER JOIN T_Org_Tree tr  ON r.FOrgTreeID = tr.FID                                             
     INNER JOIN T_Org_BaseUnit o  ON r.FOrgUnitID = o.FID                                              
     INNER JOIN T_BD_Currency c   ON r.FCurrencyID = c.FID                                             
 INNER JOIN T_RPT_Template t ON r.FTemplateID = t.FID                                                 
 INNER JOIN T_CSL_TempletItemList til  ON t.FID = til.FTemplateID                                               
 INNER JOIN T_CSL_TempletItemList til2                                        
     ON til.FItemNumber = til2.FItemNumber                                    
          AND til.FDataElement = til2.FDataElement                            
          AND til.FValueType = til2.FValueType                                
 INNER JOIN T_RPT_Template t2                                                 
     ON til2.FTemplateID = t2.FID                                             
 INNER JOIN T_CSL_CslReport r2                                                
     ON t2.FID = r2.FTemplateID AND r.FCurrencyID = r2.FCurrencyID        
      AND r.FYear = r2.FYear AND r.FPeriod = r2.FPeriod  AND r.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值