Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Per diversi giorni il Galaxy S26 Ultra di Samsung è stato il nostro compagno di vita. Oltre alle conferme del colosso coreano come la qualità del display e una suite AI senza rivali, arriva il Privacy Display, un unicum nel mondo smartphone. Ci sono ancora alcuni gap che non sono riusciti a colmare lato batteria e fotocamera, seppur con alcuni miglioramenti.
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Abbiamo provato per voi il nuovo DLC lanciato a sorpresa da Blizzard per Diablo II: Resurrected e quella che segue è una disamina dei nuovi contenuti che abbiamo avuto modo di sperimentare nel corso delle nostre sessioni di gioco, con particolare riguardo per la nuova classe dello Stregone
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Siamo tornati nel parco tecnologico di Trieste per il kick-off del programma che mette a disposizione di cinque startup le infrastrutture di ricerca, dal sincrotrone Elettra ai laboratori di genomica e HPC. Roberto Pillon racconta il modello e la visione
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-04-2015, 10: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, 11: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, 11: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, 12: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, 12: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, 12: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


Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
Dopo 13 anni cade la fortezza Xbox One: ...
Gli aggiornamenti delle stampanti HP che...
AWS al MWC 2026: quando il cloud diventa...
Project Genie non è un tool per l...
Elon Musk, il progetto TeraFab è ...
Instagram eliminerà la crittograf...
Il paradosso della crisi delle memorie: ...
SSD Samsung 9100 PRO 4TB, 14.800 MB/s, P...
Prezzo senza rivali: MSI Katana con RTX ...
Samsung T7 2TB crolla su Amazon a 159€: ...
Spotify introduce 'Taste Profile': il co...
Sole e pioggia insieme: il nuovo pannell...
AWS e Cerebras uniscono le forze: nuova ...
Windows 11: accesso al drive C: bloccato...
BYD pronta a comprare un marchio storico...
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: 09:43.


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