Общие > Базы данных

Удаление 10000 записей из таблицы

(1/3) > >>

Nikita Krivtsov:
Господа, подскажите:

Есть такая задача:
удалить из таблицы А строки, у которых поле ID встречается в таблице B.

Пишу на ПХП
MySQL версии 3.23.xx !

В таблице А 80000 строк, в таблице В 250000 строк.

Насколько я понял нужно сделать в 2 этапа:

1. выбрать совпадающие айдишники из 2х таблиц, положить их в массив. Массив преобразовать в строку (123, 124, 345, .... 34567)
2. Выполнить Delete from table A where ID in  (123, 124, 345, .... 34567)

Как бы всё должно работать. Но! Один знакомый сказал что существует какое то ограничение на количество элементов в выражении IN ().
В моем случае таких айдишников для удаления может быть от 3000 до 80000.
И вот вроде бы существует ограничение по количеству , примерно 1000 штук?

Что делать??
Как бы не правильно делать удаление where ID in  (80000 значений, перечисленных через запятую), а как по другому сделать не могу придумать :(

fidget:
Никакого ограничения на кол-во элементов в IN() нет.
Есть ограничение на длинну запроса.

> а как по другому сделать не могу придумать

в этой версии вы никак по другому и не сделаете. Хотите по другому - обновляйте MySQL сервер до 4.0

Nikita Krivtsov:

--- Цитировать ---fidget:
Есть ограничение на длинну запроса.
--- Конец цитаты ---


То есть отсюда следуют и что есть ограничение на количество элементов :)), так как каждый элемент это несколько символов :))

А какова эта максимальная длина запроса? Сколько символов??

fidget:
1048574 байт

Nikita Krivtsov:
А вот такой вопрос ещё:

Допустим нужно удалить 10000 записей из таблицы (у нас есть список нужных ID для удаления).

В теории как лучше всего делать:
удалить все 10000 записей в виде одного DELETE .. where id in () или сделать 10 раз DELETE и в каждом удалять по 1000 записей?

Другуми словами лучше удалить все записи за один раз, или в несколько приемов по 1000 штук за раз?

Интересует: при каком методе удаление произойдёт быстрее, и при каком методе нагрузка на сервер БД будет меньшей??

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии