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 |