2016-09-23 86 views
0

之間相同的密鑰尋找一些優化查詢得到「計數」(@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

回答

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的記錄是不是非常大的交易,集團如果你的數據是正確的索引可以執行好..

比方說,如果你有主mastid主鍵列和孩子mastid山坳另一個主鍵,我沒有看到一個問題,與不進行更好的查詢..

請運行查詢和更新/提出新問題與

1.Schema表的參與
2 .Actual執行計劃以XML

,如果你認爲查詢的運行速度慢

+0

由於我在每個表中有100K +記錄,所以「group by」是最佳優化 – user584018

+0

@ user584018:請參閱更新 – TheGameiswar

+0

我同意,但我在Join中有很多表,我需要在Group By中放置每個列。無論如何感謝解決方案,我會在性能方面看到。謝謝! – user584018