文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SQLServer中分表方案不当,导致left join子查询时超慢的案例

SQLServer中分表方案不当,导致left join子查询时超慢的案例

时间:2010-09-08  来源:seteor

最近同事在改一个性能报表曲线时遇到一个问题,因为在报表中加入了一条同期对比的曲线,两份数据之前是采的inner join,查起来速度挺快,但是如果往期数据不存在时,当期的数据也被抛弃,最近改成了left join的方式,问题随之而来,随着基表数据的增加,速度越来越慢,DBA自己的性能监控报表竟然出现严重的性能问题,真是糗大了。

经过分析,发现基表是用的分区表,总的数据在1亿多条左右。月曲线和周曲线都是通过2个子查询来left join而产生一个对比数据。月曲线进行了平均值计算,周曲线没有经过计算,两个查询结果集记录数据基本持平,但月曲线大约2秒左右,而周曲线竟然根本没法查(我没耐心等).

周线查询于下:

select a.dtime, a.AVG_CPU, b.AVG_CPU Last_Week_AVG_CPU
from (select dtime, value as AVG_CPU
from db_ALLperformance_MinAvg WITH(NOLOCK)
where dtime between
convert(varchar(10), dateadd(day, -7, getdate()), 21) and
convert(varchar(10), getdate(), 21)
and countername = '% Processor Time'
and hostname = '192.168.222.255') a
left join (select dtime + 7 as dtime, value as AVG_CPU
from db_ALLperformance_MinAvg WITH(NOLOCK)
where dtime between
convert(varchar(10), dateadd(day, -14, getdate()), 21) and
convert(varchar(10), getdate() - 7, 21)
and countername = '% Processor Time'
and hostname = '192.168.222.255') b on a.dtime = b.dtime
order by dtime


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载