我下表一起工作的具体日期范围(包括下面的虚拟数据;同时实际的表有大约50K的记录)确定新的记录增加了在同一个表(SQL Server)的
表All_Users的
ID, Domain, ReportDate, SamAccountName
1, Win1, 1/7/2013, user1
2, Win1, 1/7/2013, user2
3, Win1, 1/7/2013, user3
4, Win1, 1/14/2013, user1
5, Win1, 1/14/2013, user2
6, Win1, 1/14/2013, user3
7, Win1, 1/21/2013, user1
8, Win1, 1/21/2013, user2
9, Win1, 1/21/2013, user3
10, Win1, 1/21/2013, user4
11, Win1, 1/21/2013, user5
我们每周都会从AD上传一个摘录到SQL Server数据库(由Report date列标识)。 目标是能够运行查询来识别为特定日期范围添加的新AD帐户。
E.g, identify new AD accounts added from 1/7/2013 through 1/21/2013
The result should be:
10, Win1, 1/21/2013, user4
11, Win1, 1/21/2013, user5
目前,我有一个查询,如下所示:
SELECT DISTINCT ReportDate, SamAccountName, Domain, ID
FROM dbo.tbl_All_Users
WHERE (NOT (SamAccountName IN
(SELECT SamAccountName
FROM tbl_All_Users
WHERE (ReportDate = '1/7/2013')))) AND (ReportDate = '1/21/2013')
这最初的工作,而是作为表grew-查询已启动超时(很明显reasons-它不是有效的一个位)。
什么是有效的方法来做到这一点?我已经尝试使用内部连接(正如我在本网站上发布的帖子中看到的那样),但我似乎无法得到它以适合我的具体情况。鉴于我缺乏SQL知识,我似乎无法弄清楚。
这听起来我像你也许将全部提取物表上的每个每周进口,然后试图找到与上次导入独特的记录。如果这是正确的,那么最好不要导入重复记录呢?如果没有,如其他人所述,报告日期和帐户名称列中的索引可能会大大提高您的绩效,如果它们已经存在,请确保它们不被分割。 –
是的,我们每次都添加完整的提取物。这是我们审计/合规流程的一部分,用于跟踪帐户的状态 - 帐户启用,禁用,过期等情况。 – user1978735