当前位置: 代码迷 >> Sql Server >> ~这句SQL怎写效率最高?解决办法
  详细解决方案

~这句SQL怎写效率最高?解决办法

热度:22   发布时间:2016-04-24 18:33:23.0
~~~~~~~~~这句SQL怎写效率最高?~~~~~~~~~~

表A
id  name(名称)  cat1(大类)   cat2(中类)   cat3(小类)
1   A01            1             10             101
2   A02            1             10             101
3   A03            1             11             111
4   A04            1             10             101
5   A05            2             20
6   A06            2             21
...

结果
Cat(大/中/小类)    CountQty
1                   4
10                  3
11                  1
101                 3
111                 1
2                   2
20                  1
21                  1

A表以后可能数据不少,执行效率最高的方式得到上面的结果,有建议的吗?

------解决方案--------------------
执行效率最高是用视图索引(Indexed View).

或单独建表存统计结果,并在表A上建触发器,当有新增修改删除表A的数据时,同步更新统计表的数据.
------解决方案--------------------
这样吗:

--drop table a

create table A(id int,  name varchar(10),cat1 int,   cat2 int  , cat3 int)


insert into A
select 1   ,'A01',            1,             10,             101 union all
select 2   ,'A02',            1,             10,             101 union all
select 3   ,'A03',            1,             11,             111 union all
select 4   ,'A04',            1,             10,             101 union all
select 5   ,'A05',            2,             20,             null union all
select 6   ,'A06',            2,             21,             null
go


select [Cat(大/中/小类)],COUNT(*) CountQty
from
(
select cat1 [Cat(大/中/小类)] from A
union all
select cat2 from A
union all
select cat3 from A
)t
where [Cat(大/中/小类)] is not null
group by [Cat(大/中/小类)]
/*
Cat(大/中/小类) CountQty
1 4
2 2
10 3
11 1
20 1
21 1
101 3
111 1
*/
  相关解决方案