Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

INSERT or DELETE что дешевле весит, и когда

$
0
0
Я пытаюсь подобрать оптимальный способ обновления таблицы.
Пример:
Есть две таблицы trg и src:
CREATE TABLE src (pmid INT PRIMARY KEY, str1 VARCHAR(MAX), str2 VARCHAR(MAX), ...., str101 VARCHAR(MAX));
CREATE TABLE trg (pmid INT PRIMARY KEY, str1 VARCHAR(MAX), str2 VARCHAR(MAX), ...., str101 VARCHAR(MAX));
Обе таблицы одинаковы и содержат одни и теже данные, но src является источником данных для trg.
В какой то момент времени, из таблицы src были удалены строки, ровно 50%. Чтобы синхронизировать trg из src, как вариант, можно выполнить один из двух способов:
1 вар.:	TRUNCATE TABLE trg; INSERT INTO trg SELECT src.* FROM src;
2 вар.: DELETE trg WHERE NOT EXISTS(SELECT id FROM src WHERE src.pmid = trg.pmid);
я думаю, что первый вариант будет выгодным, если в таблице src будет удалено 90% строк, а второй, когда в таблице будет удалено только 10%. Но вопрос в том, при каком количестве удаленных строк (примерно), оба варианта одинаково весят? И что на этот ответ влияет?

Viewing all articles
Browse latest Browse all 7251

Trending Articles