Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Для Timur Sokolov, или опять удалить 1млн. записей / 3 сообщений из 3, страница 1 из 1
15.01.2002, 07:08
    #32020696
Vladimir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Для Timur Sokolov, или опять удалить 1млн. записей
Когда-то я задавал вопрос об удалении 1млн. записей. Там все понятно. Но вот в ответе:

SET ROWCOUNT 5000
while (exists (select * from #t /*where ...*/))
delete from #t /*where ...*/
SET ROWCOUNT 0

у меня сейчас возникли сомнения, что удалятся именно те записи, которые я вытаскиваю SELECTом. Один и тот же SQL запрос вроде может в разном порядке вернуть данные, хотя они и будут одни и те же. Или я не прав?
...
Рейтинг: 0 / 0
15.01.2002, 07:52
    #32020698
Timur Sokolov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Для Timur Sokolov, или опять удалить 1млн. записей
В общем случае, если не указан порядок сортировки ORDER BY, то один и тот же Select может возвращать данные в разном порядке, поэтому первых N записей действительно могут быть разными для одного и того же Select-а.
В предложенной ситуации, при том что условие Where *совпадает* для обоих операторов Select и Delete, оператор Delete удалит все или только часть (если записей больше 5000) записей которые могут быть возвращены Select-ом. То есть удалит подмножество оператора Select. Так как необходимо было удалить все (1`000`000) записи которые удовлетворяют where, то при таком подходе рано или поздно они удалятся, что и требовалось.
...
Рейтинг: 0 / 0
15.01.2002, 07:56
    #32020699
Александр Степанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Для Timur Sokolov, или опять удалить 1млн. записей
А какая разница в каком порядке они возвращаются селектом? У Вас есть условие, которому должны соответствовать удаляемые записи. Каждый раз из этого набора удаляется по 5000 записей (или меньше). После окончания цикла ВСЕ записи, отвечающие условиям отбора, будут удалены.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Для Timur Sokolov, или опять удалить 1млн. записей / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]