需要根据Master和Child表之间的相同键计算子表行的计数

时间:2016-09-23 04:41:46

标签: sql-server sql-server-2008

寻找一些优化查询以获得“计数”(同样出现@tblMaster表的MastId到@tblChild表。

Declare @tblMaster Table (MastId INT, MastDesc VARCHAR(10))
Insert Into @tblMaster Values(1, 'M1'),(2, 'M22')

Declare @tblChild Table (ChildId INT, MastId INT, ChildDesc VARCHAR(10))
Insert Into @tblChild Values(100, 1, 'M1'),(101, 1, 'M2'),(102, 1, 'M3'),(103, 2, 'M22')

在实际情况中,两个表都有100K +记录。请建议!!!

输出应该是,

enter image description here

1 个答案:

答案 0 :(得分:0)

select mastid,mastdesc,count(*) as cnt
from
master m
join
child c
on c.mastid=m.mastid
group by m.mastid,m.mastdesc

根据评论更新:

100 K记录不是很大,如果您的数据索引正确,Group by可以表现良好。

比如说,如果您在主mastid列上有主键,而在子mastid col上有另一个主键,我就不会看到查询效果不佳的问题..

请运行查询并使用

更新/提出新问题

1.涉及的表格的章程 2.实际执行计划为xml

如果您认为查询运行缓慢