【发布时间】:2015-12-16 00:59:38
【问题描述】:
我有 2 个表 - 表 A 包含有效日期的员工列表,另一个表 B 包含员工参考详细信息。
- 表 A - 1) Emp_ID、2)Effective_Start、3)Effective_End
- 表 B - 1) Emp_ID, 2)Emp_status
我要做的是根据 Emp_ID 筛选出有效的员工列表 - 有效的定义是 Emp_status 为 A(活动)并且该员工的特定日期(当前日期)属于Effective_start 和 end 日期。
表 A 大约有 800 条记录,表 B 大约有 2000 条记录。我应该如何通过 SQL 查询来做到这一点,这样它才会高效?
我正在考虑从表 B 中过滤掉有效的 EMP_ID 列表(约 500 条记录),然后根据 EMP_ID 和当前日期与表 A 连接,看看它是否在有效期内。但是,这意味着在表 A 的 2000 条记录中每 500 条记录进行比较,并且表 A 预计未来会增长。
对解决这个问题有什么建议吗?
【问题讨论】:
-
我认为你应该加入这两个表。关于您对表增长的关注,请记住,您将始终必须在其中一个表中执行完整扫描,除非您一次与一名员工一起工作,在这种情况下,我会让员工获得成本最低的表,然后将他从另一个通过它的 PK 收集。