【发布时间】:2013-04-10 16:47:03
【问题描述】:
我在大型数据库中遇到问题,其中一个查询显然不正确,而且我在数据库方面做得不好,所以我不确定我能做些什么来优化这个查询。下面是我的表结构,并详细说明了我需要获取的数据。
用户表
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 可以在这方面提供帮助,但我不确定如何在我的场景中应用?我想这应该是完成上述结果的单个查询?
如果您有任何问题,请告诉我。我会澄清这些。
感谢您在这方面的帮助。谢谢你的时间。
【问题讨论】:
-
如何获得调查计数?通过统计调查表中的用户 ID 数?
标签: mysql database query-optimization parent-child union