Forum Webscript.Ru
Общие => Базы данных => Тема начата: Error202 от 03 Ноября 2005, 09:01:12
-
Господа! Есть 2 таблицы... В одной - данные TXT, URL, EMAIL и во второй тоже...
Внимание вопрос:
Как сделать оптимальнее сравнение, т.е. нужно смотреть вторую таблицу и если данные уже есть в первой, то удалять их из второй...?
P.S. В данный момент у меня идет перебор данных второй таблицы, в цикл вставляется еще запрос к 1 таблице на проверку и так для каждой записи...
Сейчас во второй таблице около 2000 записей и данный механизм уже не подходит...
-
Что за СУБД?
-
:) MySQL
-
С версии 4.1 поддерживаются вложенные запросы (подзапросы).
DELETE FROM ... WHERE ... IN (SELECT ....)
типа того
-
Да это было бы шоколодно... Жаль у хостера 4.0... :(
-
Error202
переложить подзапрос на плечи приложения...
-
commander
У меня так и сделано... Только это притормаживает слегка при больших объемах... (если я правильно тебя понял)
-
Error202
поподробнее опиши как ты делаешь сравнение?
-
У меня так (в общих чертах):
SELECT id1, url1, email1 FROM table2
{
SELECT id2, url2 FROM table1 WHERE url2 = url1
если есть id2, то DELETE FROM table2 WHERE id2
SELECT id2, email2 FROM table1 WHERE email2 = email1
если есть id2, то DELETE FROM table2 WHERE id2
}
-
Error202
SELECT url1, email1 FROM table1
{
my $id2 = ... SELECT id2 FROM table2 WHERE url2 = url1 OR email2 = email1;
DELETE FROM table2 WHERE id2=$id2 if ($id2);
}
?
-
Ну да... Я там так... разбил для наглядности... Т.е. это единственный метод?
-
ИМХО
из простых да...
-
читать мануал. multi-table delete:
http://dev.mysql.com/doc/refman/4.1/en/delete.html