Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 03.10.2019, 17:16   #1
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 368
Вопрос массовое удаление из БД

Доброго времени суток!

Подскажите пожалуйста возможно ли как то сделать массовое удаление из базы данных без нагрузки на неё?

к примеру мне за раз нужно удалить к примеру 5 000 а может и 15 000 записей и вот как это сделать правильно что бы не очень нагружать БД и желательно за один раз
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Старый 03.10.2019, 17:34   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,061
По умолчанию

Не нагружать не получится. А одним запросом аж бегом, если условие where удачно получится сделать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.10.2019, 17:40   #3
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 368
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Не нагружать не получится. А одним запросом аж бегом, если условие where удачно получится сделать
то есть через цикл where если сделать то всё будет хорошо? А по времени исполнения сколько может занять?
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Старый 03.10.2019, 17:40   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

не очень понятен вопрос.
удаление - это же ОДНА команда.

Код:
delete from Таблица where ВашеУсловие
если нужно удалить вообще все записи - это ещё проще (см. TRUNCATE TABLE )

Цитата:
Сообщение от s88s Посмотреть сообщение
то есть через цикл where если сделать то всё будет хорошо?
а что такое цикл для where ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.10.2019, 17:49   #5
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 368
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не очень понятен вопрос.
удаление - это же ОДНА команда.

Код:
delete from Таблица where ВашеУсловие
То что одна команда это я знаю

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение

если нужно удалить вообще все записи - это ещё проще (см. TRUNCATE TABLE )
В том то и дело что удалять нужно не всё а к примеру из 99 999 записей удалить к примеру 25 000

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а что такое цикл для where ?
Сорян заработался хотел написать while
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Старый 03.10.2019, 17:54   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,260
По умолчанию

Цитата:
Сообщение от s88s Посмотреть сообщение
Сорян заработался хотел написать while
стало ещё менее понятно


Цитата:
Сообщение от s88s Посмотреть сообщение
В том то и дело что удалять нужно не всё а к примеру из 99 999 записей удалить к примеру 25 000
Как Вы отличаете те записи, которые нужно удалять от тех, которые не нужно удалять?
По какому признаку?

Вот этот признак и укажите в условии
Код:
delete from Таблица where ТутВашПризнакДляУдаления 
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.10.2019, 18:03   #7
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 368
По умолчанию

что удалять через условия это тоже всё понятно что я проверяю что если подходит под условия то удаляю ... вопрос как сделать что бы по времени занимало минимально ... к примеру в базе 99 999 и из них мне надо удалит 25 000 и вот что бы времени на удаление было минимальным
"Я не волшебник, я только учусь"
s88s вне форума Ответить с цитированием
Старый 03.10.2019, 18:10   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,103
По умолчанию

Соствить список по ключам и грохнуть через in. Если логика не сложная можно подумать о ее переносе на субд.
p51x вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массовое переименование файлов. lisa999 Софт 10 14.12.2015 20:27
Массовое редактирование govorun1 Microsoft Office Access 3 10.11.2014 10:32
Массовое добавление файлов gusvovan Общие вопросы Delphi 1 06.10.2011 19:06
Массовое присваивание Zhenya-Pvl Общие вопросы C/C++ 6 26.02.2011 18:51
Массовое редактирование тхт файлов Tvitvi PHP 3 06.05.2010 20:51