Я ищу лучшее решение (с точки зрения производительности) для достижения этой цели.
Я должен вставлять записи в таблицу, избегая дублирования.
Например, возьмем таблицу A
Insert into A (
Select DISTINCT [FIELDS] from B,C,D..
WHERE (JOIN CONDITIONS ON B,C,D..)
AND
NOT EXISTS
(
SELECT * FROM A ATMP WHERE
ATMP.SOMEKEY = A.SOMEKEY
)
);
У меня есть индекс над A.SOMEKEY, просто для оптимизации запроса NOT EXISTS, но я понимаю, что вставка в индексированную таблицу будет снижать производительность.
Итак, я думал о дублировании таблицы A в глобальной временной таблице, где я буду хранить индекс. Затем, удалив индекс из таблицы A и выполнив запрос, но изменив
Insert into A (
Select DISTINCT [FIELDS] from B,C,D..
WHERE (JOIN CONDITIONS ON B,C,D..)
AND
NOT EXISTS
(
SELECT * FROM GLOBAL_TEMPORARY_TABLE_A ATMP WHERE
ATMP.SOMEKEY = A.SOMEKEY
)
);
Это решило бы «вставку в индексную таблицу», но мне пришлось бы обновлять глобальное временное «А» с каждой сделанной мной вставкой.
Я как бы потерялся здесь,
Есть ли лучший способ добиться этого?
Заранее спасибо,