我正在开发一个人力资源系统,我需要跟踪用户个人资料上的所有视图,因为每个招聘人员对候选人个人资料的视图都是有限的。我主要关心的是我的方法的可扩展性,如下所示:我目前创建了一个包含 2 列的表,即被查看的候选人的 id 和查看候选人的招聘人员的 id,每个视图只计算一次,所以如果您再次看到相同的候选人,不会插入任何记录。
根据数据库中招聘人员和候选人的数量,我可以肯定地说我的表格会增长得非常快,更糟糕的是,我必须在每次请求时查询我的表格,因为我必须在 UI 中显示候选人的数量招聘人员查看过。考虑到可扩展性,哪种方法最好?
我将再解释一下这个案例:我们有公司,每家公司都有很多招聘人员。
ViewsAssigner_Identifier 表
- 编号:int PK
- Company_Id:int FK 非集群
- Views_Assigned: int 非集群
- 日期:日期非集群
CandidateViewCounts 表
- 编号:int PK
- Recruiter_id: int FK NON-CLUSTERED ?
- Candidate_id: int FK NON-Clustered ?
- ViewsAssigner_Identifier_Id: int FK NON-CLUSTERED ?
- DateViewed:日期非聚集
我将通过 [ViewsAssigner_Identifier_id] 查询所有 [Candidate_id] 的 Select
我们想按公司而不是招聘人员进行搜索,因为同一公司中的所有招聘人员都对公司使用了相同的 [Views_Assigned]。换句话说,查看候选人的第一个 Recuiter 将存储在“CandidateViewCounts”表中,而查看同一候选人的后续 Recruiter 将不会被存储。
结果: 我需要通过 [ViewsAssigner_Identifier_id] 检索所有 [Candidate_Id] 的列表,然后我可以对所有这些候选人 ID 求和。
查询示例:
从 [dbo].[CandidateViewCounts] 中选择 [Candidate_Id],其中 [ViewsAssigner_Identifier_id] = 1
有什么建议吗?