UPDATE ... where IN ( select from giovedì 28 giugno 2007 - 08.41

erik77 Profilo | Senior Member

Ciao ragazzi,
ho l'esigenza di effettuare una UPDATE <nomeTabella1>... where <Chiave> IN ('1','2',etc..)
il problema è che i valori della IN sono presi da una select su una tabella che risiede su di un altra Istanza DB e quindi non posso fare la classica ...
where <Chiave> IN (select <Chiave> from...)

Per aggiornare questi dati ho quindi prima letto i dati con la select e li ho caricati in un DataSet... e poi ciclando sul DataSet ho aggiornato la Tabella un record alla volta.

Il problema è prestazionale... siccome i record della select sono circa 3000... ciclare su 3000 record... per poi andare ad aggiornare un record alla volta... risulta essere molto costoso in termini di tempi.

Vorrei un consiglio su come ottimizzare un aggiornamento simile... su tabelle che risiedono in Istanze DB diverse..

vi ringrazio in anticipo

ciaooo

alx_81 Profilo | Guru

>Ciao ragazzi,
Ciao!

>ho l'esigenza di effettuare una UPDATE <nomeTabella1>...
>where <Chiave> IN ('1','2',etc..)
>il problema è che i valori della IN sono presi da una select
>su una tabella che risiede su di un altra Istanza DB e quindi
>non posso fare la classica ...
>where <Chiave> IN (select <Chiave> from...)
>
>Per aggiornare questi dati ho quindi prima letto i dati con la
>select e li ho caricati in un DataSet... e poi ciclando sul DataSet
>ho aggiornato la Tabella un record alla volta.
>
>Il problema è prestazionale... siccome i record della select
>sono circa 3000... ciclare su 3000 record... per poi andare ad
>aggiornare un record alla volta... risulta essere molto costoso
>in termini di tempi.
>
>Vorrei un consiglio su come ottimizzare un aggiornamento simile...
>su tabelle che risiedono in Istanze DB diverse..
Intanto.. che DBMS utilizzi?
poi, due istanze db sono due istanze sullo stesso server? oppure due server diversi? oppure solo due database diversi?

>
>vi ringrazio in anticipo
>
>ciaooo
ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino

erik77 Profilo | Senior Member

dettaglio meglio :)

utilizzo Sql Server e le istanze DB risiedono sullo stesso server...

in questo momento stavo pensando di crearmi una copia delle tabelle sull'istanza dove effettuare UPDATE .... where <NomeChiave> IN ( SELECT ....

ma non sò se è la soluzione migliore


alx_81 Profilo | Guru

>dettaglio meglio :)
>
>utilizzo Sql Server e le istanze DB risiedono sullo stesso server...
quindi, ipotizzando un server SERVER1, tu hai due istanze SQL Server, una SERVER1\MSSQL1 e l'altra SERVER1\MSSQL2 ad esempio?

Alx81 =)

http://blogs.dotnethell.it/suxstellino

erik77 Profilo | Senior Member

esatto :)

alx_81 Profilo | Guru

>esatto :)
devi aggiungere un linked server, ovvero trattare le due istanze come server differenti..
leggi questo link

sp_addlinkedserver
http://msdn2.microsoft.com/en-us/library/ms190479.aspx

Alx81 =)

http://blogs.dotnethell.it/suxstellino

erik77 Profilo | Senior Member

perfetto era una delle soluzioni che immaginavo... ma forse replicare la tabella sull'istanza d'interesse è + veloce


grazie
CIaooo

alx_81 Profilo | Guru

>perfetto era una delle soluzioni che immaginavo... ma forse replicare
>la tabella sull'istanza d'interesse è + veloce
in effetti le query cross server cmq hanno un calo di prestazioni..
se il gioco vale la candela, replica l'oggetto che almeno hai la query sullo stesso server.
>
>
>grazie
>CIaooo

Alx81 =)

http://blogs.dotnethell.it/suxstellino
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5