PROBLEMA:
ho una tabella Catalogo di 170.000 righe ed una tabella CatalogoOLD di 8000 righe.
La tabella CatalogoOLD contiene un elenco di libri identificati da un codice ISBN a cui è abbinata una descrizione testuale.
LA tabella Catalogo contiene un elenco molto grande di libri identificati sempre da un codice ISBN a cui è associata una descrizione vuota.
Quello che devo fare è semplicemente copiare le descrizioni che trovo in CatalogoOLD nei campi ISBN corrispondenti della tabella Catalogo.
All'apparenza mi sembrava un gioco da ragazzi e invece ho incontrato non poche difficoltà.
RISOLUZIONE:CAMPI TABELLA "Catalogo":
isbn - testo
CAMPI TABELLA "CatalogoOLD":
isbnOLD - testoOLD - id, dove id è un campo INT compresi in un intervallo [0..8662]
1. attraverso un join sul campo isbn delle due tabelle ho creato come prima cosa una vista di 4000 righe contenenti tutte le descrizioni da inserire
(es: id 63 - isbnOLD 899996789X - testoOLD "Questo libro parla..")
2. ho quindi creato questa STORED PROCEDURE:
Ebbene.. l'algoritmo pare funzionare bene ma estremamente a rilento rendendone impossibile la terminazione. Stoppando la procedura dopo 5 minuti esatti ho notato che erano state esaminate solo 70 righe stimando che per completare la procedura sarebbe state necessario un tempo di all'incirca 10 ore!codice:DECLARE @contatore AS INT SET @contatore = 1 -- scorro la vista creata dal join ISBN sulle due tabelle WHILE @contatore < 8663 BEGIN -- se id e contatore coincidono effettuo l'UPDATE IF EXISTS(SELECT id FROM descrizioniOLD WHERE id = @contatore) BEGIN UPDATE catalogo SET testo = (SELECT testoOLD FROM descrizioniOLD WHERE id = @contatore) WHERE isbn = (SELECT isbnOLD FROM descrizioniOLD WHERE id = @contatore) END -- incremento in ogni caso il contatore SET @contatore = @contatore + 1 print 'contatore = '+ STR(@contatore) ENDVVoVe:
Qualcuno sa consigliarmi un metodo più efficiente?
p.S: ho provato anche con un cursore ma SQLServer mi segnala che non può esaminare più di 100 righe.. è possibile aumentare questo valore? A livello di prestazioni che metodo è meglio adottare? Ciao a tutti e grazie in anticipo a chi prova a darmi una mano

VVoVe:
Rispondi quotando
