需要基于主机和子女表

问题描述:

之间相同的密钥寻找一些优化查询得到“计数”(@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

+0

你能告诉样本数据在两个表中,除了主广告的孩子,我们不会对你的问题 – TheGameiswar

+1

对不起,现在添加样本数据的任何想法, 谢谢!!! – user584018

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的记录是不是非常大的交易,集团如果你的数据是正确的索引可以执行好..

比方说,如果你有主mastid主键列和孩子mastid山坳另一个主键,我没有看到一个问题,与不进行更好的查询..

请运行查询和更新/提出新问题与

1.Schema表的参与
2 .Actual执行计划以XML

,如果你认为查询的运行速度慢

+0

由于我在每个表中有100K +记录,所以“group by”是最佳优化 – user584018

+0

@ user584018:请参阅更新 – TheGameiswar

+0

我同意,但我在Join中有很多表,我需要在Group By中放置每个列。无论如何感谢解决方案,我会在性能方面看到。谢谢! – user584018