Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-04-2015, 09:03   #1
doctorAle85
Bannato
 
Iscritto dal: Oct 2007
Messaggi: 452
[SQL] Query Delete su tabella Access di 500k record che si blocca. Avete soluzioni?

Ciao a tutti,
Sto impazzendo perchè non riesco a far eseguire una query Delete su una tabella Access di circa 5 milioni di record. Ho provato anche a splittare la tabella in più tabelle da 500k record ognuna, ma non sono riuscito a risolvere il problema.
Sia T1 la tabella da cui devo cancellare i record. A e B sono i campi di T1, la cui concatenazione può essere o non nel campo C della tabella T2 (ha solo il campo C).
Se la concatenazione di A e B non è presente nel campo C, cancello il record da T1.
La query utilizzata è la seguente:

DELETE * FROM T1
WHERE A&B NOT IN (SELECT * FROM T2)

Una volta che la lancio (sia nella tabella da 5 milioni di record che in quelle da 500k), sembra come se la query non facesse nulla. Ho provato anche ad attendere 20/30 min ma è come se non girasse.

Ho un PC con processore i5-2520M dual core 2,50ghz e 6gb di RAM.

Avete qualche consiglio da darmi?
Soluzioni?
Grazie
doctorAle85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2015, 10:40   #2
Daniels118
Senior Member
 
L'Avatar di Daniels118
 
Iscritto dal: Jan 2014
Messaggi: 852
Se ho ben capito anche T2 ha molti record.
Non conosco benissimo access, ma in genere la IN è poco performante perché viene eseguita su dati non indicizzati, se poi questi dati vengono da una select è ancora peggio perché non conoscendo i valori a priori l'engine non è in grado di eseguire ottimizzazioni.
Prima di tutto assicurati di creare un indice su T2.C.
Poi sostituisci la NOT IN con una cosa tipo:
Codice:
NOT EXISTS (SELECT 1 FROM T2 WHERE T2.C = T1.A&T2.B)
Mi perdonerai se ci sono errori di sintassi, l'ho scritta al volo.
Daniels118 è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2015, 10:52   #3
Maui78
Senior Member
 
L'Avatar di Maui78
 
Iscritto dal: Jan 2005
Messaggi: 395
Quote:
Originariamente inviato da doctorAle85 Guarda i messaggi
Ciao a tutti,
Sto impazzendo perchè non riesco a far eseguire una query Delete su una tabella Access di circa 5 milioni di record. Ho provato anche a splittare la tabella in più tabelle da 500k record ognuna, ma non sono riuscito a risolvere il problema.
Sia T1 la tabella da cui devo cancellare i record. A e B sono i campi di T1, la cui concatenazione può essere o non nel campo C della tabella T2 (ha solo il campo C).
Se la concatenazione di A e B non è presente nel campo C, cancello il record da T1.
La query utilizzata è la seguente:

DELETE * FROM T1
WHERE A&B NOT IN (SELECT * FROM T2)

Una volta che la lancio (sia nella tabella da 5 milioni di record che in quelle da 500k), sembra come se la query non facesse nulla. Ho provato anche ad attendere 20/30 min ma è come se non girasse.

Ho un PC con processore i5-2520M dual core 2,50ghz e 6gb di RAM.

Avete qualche consiglio da darmi?
Soluzioni?
Grazie
Ciao
Se la query non fa nulla vuol dire che è in corso una full table scan. E lo vedi tranquillamente con il task manager verificando l'I/O su disco.
Ma su questa tabella ci sono indici ? I dati che vuoi cancellare quanti sono in percentuale sul totale ?
Maui78 è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2015, 11:27   #4
doctorAle85
Bannato
 
Iscritto dal: Oct 2007
Messaggi: 452
Quote:
Originariamente inviato da Daniels118 Guarda i messaggi
Se ho ben capito anche T2 ha molti record.
Non conosco benissimo access, ma in genere la IN è poco performante perché viene eseguita su dati non indicizzati, se poi questi dati vengono da una select è ancora peggio perché non conoscendo i valori a priori l'engine non è in grado di eseguire ottimizzazioni.
Prima di tutto assicurati di creare un indice su T2.C.
Poi sostituisci la NOT IN con una cosa tipo:
Codice:
NOT EXISTS (SELECT 1 FROM T2 WHERE T2.C = T1.A&T2.B)
Mi perdonerai se ci sono errori di sintassi, l'ho scritta al volo.
Sto aggiornando la tabella in modo che verifico solo la presenza di A in C (ho aggiornato il campo). Per ora mi risparmio la concatenazione. In un secondo momento magari la reintroduco.
Dato che è un Access creato da altri colleghi, ho appena verificato e non c'erano indici.
Ora ho indicizzato sia il campo A (che può contenere duplicati), sia il campo C (non contiene duplicati).
Proverò anche ad utilizzare la NOT EXIST.

Quote:
Originariamente inviato da Maui78 Guarda i messaggi
Ciao
Se la query non fa nulla vuol dire che è in corso una full table scan. E lo vedi tranquillamente con il task manager verificando l'I/O su disco.
Ma su questa tabella ci sono indici ? I dati che vuoi cancellare quanti sono in percentuale sul totale ?
I dati che voglio cancellare penso che saranno circa l'80/90%.
Già avevo controllato il task manager, ma anche li era completamente 'fermo'. L'utilizzo della RAM non aumentava e idem per la CPU.
doctorAle85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2015, 11:47   #5
doctorAle85
Bannato
 
Iscritto dal: Oct 2007
Messaggi: 452
Ragazzi, è andataaaa!
Ci ha messo una decina di minuti, ma quando mi è comparsa la popup per confermarmi che non avrei potuto fare l'undo mi sono emozionato!
Grazie mille
doctorAle85 è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2015, 11:54   #6
Maui78
Senior Member
 
L'Avatar di Maui78
 
Iscritto dal: Jan 2005
Messaggi: 395
Quote:
Originariamente inviato da doctorAle85 Guarda i messaggi

I dati che voglio cancellare penso che saranno circa l'80/90%.
Già avevo controllato il task manager, ma anche li era completamente 'fermo'. L'utilizzo della RAM non aumentava e idem per la CPU.
Quand'è così ti conviene quasi fare il contrario, cioè, salvare solo i dati che vuoi tenere buttandoli su una seconda tabella. Almeno vai per indice e non in full table scan.
Sul task manager in questi casi devi vedere l'I/O su disco, non la cpu e la ram.

Ciao
Maui78 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
iPhone 18 Pro e Pro Max, svelata la capa...
Dreame L50 Ultra AE a 499€ (invece di 59...
Problemi di gioventù per i Pixel 11: Goo...
Le app di dating potrebbero aver stufato...
Il successo di iPhone Duo rappresentereb...
Cartello sull'IA? L'accusa durissima con...
L'IA sempre più protagonista nei videogi...
Revolut ha consegnato passaporti e selfi...
Office 2021, 3 anni di aggiornamenti di ...
Dopo 23 anni di silenzio, Warcraft 3 spi...
Roblox sfida l'ecosistema gaming: app st...
OpenAI accusata di plagio dai migliori m...
Altro attacco hacker dell'IA: gli agenti...
Stiamo davvero perdendo il controllo del...
Microsoft perde un pilastro: Frank Shaw ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 08:27.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v