我下表一起工作的具體日期範圍(包括下面的虛擬數據;同時實際的表有大約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