我在大型数据库中遇到问题,其中一个查询显然不正确,而且我在数据库方面做得不好,所以我不确定我能做些什么来优化这个查询。下面是我的表结构,并详细说明了我需要获取的数据。
用户表
UserID UserName UserRole ParentID
1 ABC1 2 0
2 ABC2 2 0
3 ABC3 2 1
4 ABC4 2 1
5 ABC5 2 2
调查表结构
SurveryID SurveyTitle UserID
1 S1 3
2 S2 3
3 S3 4
4 S4 4
3 S3 4
4 S4 5
3 S3 3
4 S4 5
3 S3 3
4 S4 4
没有 parentID 的用户是主管,而有 parentID 的用户是该父主管下的销售人员。
所以,我想通过他们所做的一些操作系统调查来获取主管的名单和他们的销售人员。像下面的东西。
SuperVisorName SurveyCount
ABC1 10
ABC3 4
ABC4 6
ABC2 18
ABC5 18
在我们当前的系统中,我们首先获取所有主管,然后查看所有主管以获取他们的销售人员及其调查。
这使得查询非常慢,从而导致超时错误。我们现在有 40k 条调查记录,希望增长超过 100k。
我对此进行了很少的搜索,我们发现 Union 可以在这方面提供帮助,但我不确定如何在我的场景中应用?我想这应该是完成上述结果的单个查询?
请让我知道,如果你有任何问题。我会澄清这些。
将感谢您对此的帮助。谢谢你的时间。