У меня есть таблица Customer с 200.000+ записями, которые я должен пройти по циклу, проверить условие (для определенного столбца) и обновить столбец «IsPremiumUser» до TRUE.Каков наилучший способ сделать это?
Я вижу, что могу достичь этого двумя способами
- Использовать объединение и обновление
- Прокручивать каждую запись и обновлятьit.
Я использую SQL Server2008.
Обновление: я имел в виду не циклический просмотр записей с использованием C # или Java, а в самом SQL.Я ищу способы сократить время выполнения, поскольку существует более 200 000 записей.Использование обновления + соединения
Обновление 2 занимает 20 минут. Ниже приведены запросы.
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 между этими утверждениями.