Автор Тема: Сравнение таблиц  (Прочитано 6081 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Сравнение таблиц
« : 03 Ноября 2005, 09:01:12 »
Господа! Есть 2 таблицы... В одной - данные TXT, URL, EMAIL и во второй тоже...

Внимание вопрос:
Как сделать оптимальнее сравнение, т.е. нужно смотреть вторую таблицу и если данные уже есть в первой, то удалять их из второй...?

P.S. В данный момент у меня идет перебор данных второй таблицы, в цикл вставляется еще запрос к 1 таблице на проверку и так для каждой записи...

Сейчас во второй таблице около 2000 записей и данный механизм уже не подходит...
Космическая игрушка

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Сравнение таблиц
« Ответ #1 : 03 Ноября 2005, 09:08:53 »
Что за СУБД?

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Сравнение таблиц
« Ответ #2 : 03 Ноября 2005, 09:20:04 »
:) MySQL
Космическая игрушка

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Сравнение таблиц
« Ответ #3 : 03 Ноября 2005, 09:46:28 »
С версии 4.1 поддерживаются вложенные запросы (подзапросы).
DELETE FROM ... WHERE ... IN (SELECT ....)
типа того

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Сравнение таблиц
« Ответ #4 : 03 Ноября 2005, 09:47:42 »
Да это было бы шоколодно... Жаль у хостера 4.0... :(
Космическая игрушка

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Сравнение таблиц
« Ответ #5 : 03 Ноября 2005, 10:06:28 »
Error202
переложить подзапрос на плечи приложения...
And no religion too...

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Сравнение таблиц
« Ответ #6 : 03 Ноября 2005, 10:14:22 »
commander
У меня так и сделано... Только это притормаживает слегка при больших объемах... (если я правильно тебя понял)
Космическая игрушка

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Сравнение таблиц
« Ответ #7 : 03 Ноября 2005, 10:21:53 »
Error202
поподробнее опиши как ты делаешь сравнение?
And no religion too...

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Сравнение таблиц
« Ответ #8 : 03 Ноября 2005, 10:44:41 »
У меня так (в общих чертах):


SELECT id1
url1email1 FROM table2
{
  
SELECT id2url2 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
}
Космическая игрушка

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Сравнение таблиц
« Ответ #9 : 03 Ноября 2005, 12:53:40 »
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);
}

?
And no religion too...

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Сравнение таблиц
« Ответ #10 : 03 Ноября 2005, 12:57:28 »
Ну да... Я там так... разбил для наглядности... Т.е. это единственный метод?
Космическая игрушка

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
Сравнение таблиц
« Ответ #11 : 03 Ноября 2005, 13:11:32 »
ИМХО
из простых да...
And no religion too...

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Сравнение таблиц
« Ответ #12 : 03 Ноября 2005, 15:32:49 »
читать мануал. multi-table delete:
http://dev.mysql.com/doc/refman/4.1/en/delete.html
На Машине Тьюринга далеко не уедешь.

 

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