我有一张200.000+条记录的Customer表,我必须循环查看条件(在特定列上)并将“IsPremiumUser”列更新为TRUE。 什么是最好的方式去呢?需要帮助SQL - 通过2 Lac +记录进行解析
我看,我可以通过两种方式
- 使用加入,并通过每个记录更新
- 循环和更新它实现这一目标。
我正在使用SQL Server2008。
更新:我不是指使用C#或Java循环记录,而是在SQL本身。我正在寻找减少执行时间的方法,因为有超过200.000条记录。它需要20分钟使用更新+加入
更新2:这里是查询。
MERGE pref.personpreference AS T
USING (SELECT PR.PersonID,PR.PersonroleId from personrole PR) as S
ON (T.PersonRoleID = S.PersonRoleID)
WHEN MATCHED THEN
UPDATE SET T.SDRPERSONID = S.PersonId;
UPDATE PP
SET PP.SDRPersonID = PR.PersonID
FROM PREF.PersonPreference PP JOIN PersonRole PR
ON PP.PersonRoleID = PR.PersonRoleID
注:合并需要17分钟并更新20分钟才能执行。但是我看到这些陈述之间修改的记录数相差大约1000。
你能发布这类以20 +分钟运行您的更新语句?
它更新了多少条记录?刚刚发现了什么[2Lakh] [1]是 –Update2有查询。 – nfa379