[ Jpeca @ 17.05.2011. 12:44 ] @
Svakih mesec, dva potrebno je ažurirati tabelu koja ima oko 50000 redova. Novi sadržaj tabele formiram u lokalnoj SQL bazi. Da je prebacim na testno, odnosno produkciono okruženje, pomoću Database publisher-a kreirao sam skript koji briše postojeću tabelu, kreira novu i popunjava tabelu red po red pomoću INSERT ... VALUES ...
Problem je što ovo traje oko 30 minuta.

Da li postoji efikasniji način da se ovo uradi? Da li postoje neke opcije koje se mogu uključiti pre insert kako bi ovo bilo efikasnije?

Bitno je da bude skript koji će se startovati kad se dogovori, jer nemam direktan pristup produkcionom serveru, pa ne mogu popuniti tabelu iz moje lokalne verzije. Verzija servera je 2005 tako da nije moguće koristiti jedan insert za više redova. Potrebno je da se ažuriraju svi redovi - znači nije samo dodavanje novih. Tabela koja se popunjava nema trigera, ni constrains.

[ stevs986 @ 17.05.2011. 13:09 ] @
A da prvo kreiras tabelu IME_TABELE_NEW tim skriptom, pa koliko traje da traje. A onda iz nje samo

Code:


INSERT INTO TABELA(...)

SELECT *
FROM IME_TABELE_NEW




Ovo bi trebalo ici znatno brze. S tim da opet imas izgubljeno vreme za pravljenje te prrivermene tabele i insert u nju.

Ali downtime ti je vrlo mali.
[ Koce @ 20.05.2011. 09:02 ] @
Umejsto sto kreiras skript za "insert into", pokusaj rezultat upita snimiti u text file pa uradi bulk insert iz njega na produkciji.
Takodje, ako na tabeli imas indexe, skini ih pre punjenja i ponovo vrati kad zavrsis.