Запирос на пересечение и вычитание. Оптимизировать.

katch

Новичок
Запрос на пересечение и вычитание. Оптимизировать.

Здраствуйте. :)
Заранее изиняюсь, если где туплю, с мускулем (да и вапше скл) работаю впервые.
Нужна помощь в составлении запроса.

Дано: Две идентичные таблицы. По ряду полей, записи в этих таблицах могут совпадать.
В результате должно быть: Одна таблица, в которой, из первой талицы взяты записи на пересечении таблиц с одним измененным полем, взятым из соотвтсв. записи второй таблицы. И все записи не вошедшие в пересечение из второй талицы.

Раньше я решил эту задачу так (tbl3 - временная таблица, идентичная tbl1 и tbl2):

[sql]
INSERT INTO tbl3(
SELECT tbl1.Fld1, tbl1.Fld2, tbl1.Fld3, tbl1.Fld4, tbl1.Fld5, tbl1.Fld6, tbl2.Fld7, tbl1.Fld8, tbl1.Fld9, tbl1.Fld10
FROM tbl1, tbl2
WHERE (tbl1.Fld1 = tbl2.Fld1) AND (tbl1.Fld3 = tbl2.Fld3) AND (tbl1.Fld4 = tbl2.Fld4) AND (tbl1.Fld5 = tbl2.Fld5)
);

INSERT INTO tbl3(
SELECT *
FROM tbl2
where tbl2.Fld1 NOT IN (
SELECT tbl2.Fld1
FROM tbl1,tbl2
WHERE (tbl1.Fld1 = tbl2.Fld1) AND (tbl1.Fld3 = tbl2.Fld3) AND (tbl1.Fld4 = tbl2.Fld4) AND (tbl1.Fld5 = tbl2.Fld5)
)
)

[/sql]

Когда записей было порядка 5000 - этот запрос меня особо не беспокоил, ибо операция одноразовая (раз в сутки). Но когда записей стало около 700 000. То даже для одноразовой операции он выполняется слишком долго. Основная нагрузка, как я понимаю, вот на этом:
...
where tbl2.Fld1 NOT IN (
...

Очень хочется услышать совет, как бы более опытные люди решали такую задачу. Хелп плиз. :)







ADD: Проблема решена. Я тупил. Извиняюсь за беспокойство. Тему можно удалить =*)
 
Сверху