Форум: "Базы";
Текущий архив: 2011.02.20;
Скачать: [xml.tar.bz2];
ВнизПомогите оптимизировать скрипт Найти похожие ветки
← →
harisma © (2009-09-17 15:36) [0]Существует 2 базы с набором таблиц одинаковой структуры.
Обе базы имеют некоторые данные в этих таблицах.
Необходимо из одной таблицы одной базы добавить в такую же таблицу другой базы недостающие записи.
На этой таблице стоит уник констрейт на поле Name. Примари кей установлен на поле RECID. Это поле неавтоинкрементное. Соответственно получается следующий скрипт:
INSERT INTO [base2].DBO.LISTVIEW
SELECT * FROM [base1].DBO.LISTVIEW AS OLD
WHERE NOT OLD.RECID IN (SELECT RECID FROM [base2].DBO.LISTVIEW)
AND NOT OLD.NAME IN (SELECT NAME FROM [base2].DBO.LISTVIEW)
Вот можно ли как-то оптимизировать условие WHERE?
Спасибо заранее.
← →
Anatoly Podgoretsky © (2009-09-17 15:55) [1]Какой вопрос по Дельфи, а не по MSSQL?
← →
Palladin © (2009-09-17 16:19) [2]оптимизация SQL запросов проивзодится на уровне БД
← →
sniknik © (2009-09-17 16:20) [3]
INSERT INTO LoacalBase.DBO.LISTVIEW
SELECT o.*
FROM OutBase.DBO.LISTVIEW AS o
LEFT JOIN LoacalBase.DBO.LISTVIEW AS l
WHERE l.RECID IS NULL
должно быть быстрее, насколько это вообще возможно, с таким подходом. тянуть из другой базы всю, возможно не маленькую... таблицу ради вставки пары записей...
лучше уж определить что то вроде точки отсчета (автоинкремент/время) и запрашивать только после нее, т.е. ту часть которая точно не существует в этой базе. ну и сохранять ее естественно при переносе очередной "порции".
← →
stas © (2009-09-17 16:27) [4]А я чего-то непонял в новой таблице IDREC и NAME не соответствуют старой.
т.е. в новой IDREC 10 NAME ДЯДЯ ВАСЯ
и в старой IDREC 10 NAME ТЕТЯ МАША?
Тогда какими данными мы дополняем?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2011.02.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.003 c