Как быть

Статус
В этой теме нельзя размещать новые ответы.

bumer3

Постоялец
Регистрация
10 Янв 2008
Сообщения
291
Реакции
155
Народ есть три таблици
1 список файлов
2. списки скачивания файлов для каждого из 1 таблици
3. список файлов в архивах для каждого из 1 таблици

так вот мне нужно почистить 2 и 3, чтобы удалить в них записи с ID файлов, которых нет в 1 таблици.

(1 таблицу когда чистил забыл про 2 и 3)
а там щас такие размеры и немного все тормозит помогите как быть
 
В чём проблема?
Если хочешь получить готовый запрос, приведи структуру таблицы.
Если нет, то задай вопрос по человечески.
 
ну самое простое но туповатое сделать цикл
Код:
for($i=0; $i < последнего ид; $i++)
   {
    $result = $db->query ( "SELECT * FROM таблица WHERE id = '$i'" );
    if ( $db->num_rows ( $result ) == 0 )
         {
         $sql = "DELETE FROM таблица2 WHERE id='$i' LIMIT 1";
	 $db->query ( $sql );

         $sql = "DELETE FROM таблица3 WHERE id='$i' LIMIT 1";
	 $db->query ( $sql );
         }
    }
$db - класс для работы с MySql, команды впринцапе понятные
 
Не туповатое, а вообще дебильное. Кроме того не правильное :D
 
ну как-то так :)
Код:
delete from table_number_2 where table1_id not in (select distinct id from table_number_1)


Также и для третьей. Запрос медленный, + работает в mysql 5+.
table_number_2 - вторая таблица,
table1_id - зависимый id из 1-ой таблице во второй.
 
Последний совет то чно надо я и не подумал что так можно сделать. сенци за помощь!!!
 
:bc:Да уж. Для меня это тёмный лес.
 
ну как-то так :)
Код:
delete from table_number_2 where table1_id not in (select distinct id from table_number_1)


Также и для третьей. Запрос медленный, + работает в mysql 5+.
table_number_2 - вторая таблица,
table1_id - зависимый id из 1-ой таблице во второй.
Можно вообще всё сделать одним запросом.
Но, как показывает практика, иногда в плане оптимизации нагрузки на БД имеет смысл дёргать по одной записи в цикле.
 
Ну, ТС вроде о оптимизации вообще речи не вёл.. Это я случайно ляпнул, потому что запрос реально медленный (хотя зависит от объёма).

Ну чтож, оптимизация. Тогда надо было получить одним запросом эти уникальные id, а ещё двумя - удалить. Так наименьшая нагрузка.

Ну а если сервер совсем хилый.. Удалять в цикле + sleep/usleep().
 
Да я не оспаривал твой пост ;) Так, лирическое отступление.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху