如何优化含嵌套GROUP BY的多表关联SQL语句?
SQL查询性能优化求助
编辑说明:刚修改了最后一条SQL语句的别名,确保别名清晰无重复——此前嵌套语句中有重复的别名
a。
背景信息
从另一服务器的数据库获取数据,在数据库外处理后导入临时表#temp1,相关信息如下:
- 复合主键:
FromPK与WordID(WordID为数据处理阶段生成) - 数据规模:约30万行
- 示例数据:
| FromPK | WordID | sometext |
|---|---|---|
| 1 | 1 | A |
| 1 | 2 | B |
| 1 | 3 | C |
| 2 | 1 | A |
| 2 | 2 | B |
| 2 | 4 | D |
当前执行的查询语句
生成临时表#temp2的查询
select a.FromPK, b.ToPK, count(*) as wordcount into #temp2 from #temp1 a inner join TableFoo b on a.WordID = b.WordID group by a.FromPK, b.ToPK
最终查询语句
select a.ID, a.Col1, a.Col2, b.pkid, c.sometext from TableBar a inner join ( select b.*, c.pkid from ( select pkid, max(wordcount) as maxwordcount from #temp2 group by pkid ) b join #temp2 c on b.pkid = c.pkid where b.wordcount = c.maxwordcount ) d on a.ID = d.pkid join #temp1 e on d.pkid = e.pkid
问题
尝试过将第一条查询嵌套到第二条中替代#temp2,但无论哪种方式,查询速度都极慢。求可行的优化方法?
提前感谢!
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

