恶心的pivot不能帮我提速,我要你何用!!!

自由小菜园 2011-09-05 02:45:31
前些天为了统计采用传统的sum来统计,各等级的个数,后来想想能不能改进效率,采用pivot,结果让我很失望啊!


set statistics time on
select 高,中,低
from(
select uName,ready1.value('(Ext/quality)[1]','nvarchar(100)') as quality from dbo.Base
where CityCode like ',%3301%,')
as baseTable
pivot(count(uName) for quality in(高,中,低)) as table2
set statistics time off

--SQL Server 执行时间:
-- CPU 时间 = 1968 毫秒,占用时间 = 995 毫秒。

set statistics time on
select
sum(case when quality='高' then 1 else 0 end) as '高',
sum(case when quality='中' then 1 else 0 end) as '中',
sum(case when quality='低' then 1 else 0 end) as '低'
from(
select uName,ready1.value('(Ext/quality)[1]','nvarchar(100)') as quality from dbo.Base
where CityCode like ',%3301%,')
as baseTable
set statistics time off

--SQL Server 执行时间:
-- CPU 时间 = 1938 毫秒,占用时间 = 983 毫秒。

...全文
251 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
火才松 2011-09-05
  • 打赏
  • 举报
回复
msdn上没有说PIVOT会提速啊?增加可读性,减少代码量,多个选择。执行计划都一样。
--小F-- 2011-09-05
  • 打赏
  • 举报
回复
PIOVT又不能完全的代替max(case ..when...)

而且查询优化器在大部分情况下都会将PIOVT的执行计划解读成max(case..when)
-晴天 2011-09-05
  • 打赏
  • 举报
回复
条条大路通罗马.
NBDBA 2011-09-05
  • 打赏
  • 举报
回复
有道理,pivot确实没多大作用,增加下代码可读性吧
chuanzhang5687 2011-09-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fuyun2000 的回复:]
10多万吧
[/Quote]这么多的数据,这速度可以了!
自由小菜园 2011-09-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jinfengyiye 的回复:]

这个有差别吗?你运行10 求平均!
第次清缓存没?
[/Quote]
呵呵其实没差别,看到的连个执行计划一模一样的,我是想希望会快一点
gw6328 2011-09-05
  • 打赏
  • 举报
回复
这个有差别吗?你运行10 求平均!
第次清缓存没?
自由小菜园 2011-09-05
  • 打赏
  • 举报
回复
10多万吧
chuanzhang5687 2011-09-05
  • 打赏
  • 举报
回复
多少数据?
快溜 2011-09-05
  • 打赏
  • 举报
回复
没人说过pivot可以提速。

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧