日期:2014-05-18  浏览次数:20454 次

Sql2005行转列性能问题
目前做一个公司内部的广告投放效果分析系统,在做报表的时候需要根据日期对结果进行行转列,

我目前用得是
select * from 
(select ADTotalMoney,date from AD_Statisticsview) a 
pivot (sum(ADTotalMoney) for date in ([2011-11-01],[2011-11-02],[2011-11-03])) b

但是项目经理想要喊在程序里面来行转列,他说sql里面转换代价会很大,时间久了数据库会吃不消,他说在程序里效率高些。我想听听大神们的意见。或者是怎么去比较两者的效率问题。

------解决方案--------------------
或者说他只说对了一半吧, 跟放在哪性能好,是没有关系的, 只是说把压力丢给哪边, 给web server还是db server或者用户的浏览器。

设计思路问题,跟性能无关。
------解决方案--------------------
行列轉換主要耗的是CPU, 看需處理的數據量如何?

如果數據量小的話,交給哪邊處理無所謂,

如果數據量大的話,建議由前端程序服務器來處理(基於負載均衡的原則).
------解决方案--------------------
如果放数据库 就需要数据库开发人员来维护 放程序端 就需要程序员来维护


维护的人员不一样而已 哈哈