Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Eliminazione duplicati via query che dura da 1h

  1. #1
    terrornoize non è in linea Scolaretto
    Ciao a tutti,
    ho una tabella da 800k record con dei duplicati, volevo rimuoverli con questa query:

    DELETE *
    FROM TBL_Imported_Deals AS T1
    WHERE ID <>
         (SELECT MAX(ID)
          FROM TBL_TBL_Imported_Deals AS T2
          WHERE T2.Deal_Company = T1.Deal_Company AND T2.Deal_Date_Standardized = T1.Deal_Date_Standardized AND T2.Firm_Name = T1.Firm_Name);
    
    Ma ci impiega ore su così tanti record...
    Avete suggerimenti validi su come procedere in maniera un po' più spedita?

  2. #2
    L'avatar di gibra
    gibra non è in linea Very Important Person
    La logica vuole che se usi gli alias... devi usarli sempre, ovvero:

    DELETE *
    FROM TBL_Imported_Deals AS T1
    WHERE T1.ID <>
         (SELECT MAX(T2.ID)
          FROM TBL_TBL_Imported_Deals AS T2
          WHERE T2.Deal_Company = T1.Deal_Company 
            AND T2.Deal_Date_Standardized = T1.Deal_Date_Standardized 
            AND T2.Firm_Name = T1.Firm_Name);
    
    P.S. Spero tu stia lavorando su un database/tabella di test, prima, perché la tua query non mi convince...
    Ultima modifica di gibra; 16-04-2021 10:44 
    ℹ️ Leggi di più su gibra ...

  3. #3
    terrornoize non è in linea Scolaretto
    Quote Originariamente inviato da gibra Visualizza il messaggio
    P.S. Spero tu stia lavorando su un database/tabella di test, prima, perché la tua query non mi convince...
    Sono aperto a qualsiasi consiglio... non sono un esperto, anzi.
    Come imposteresti tu la query per eliminare i record duplicati di quella tabella confrontando quei 3 campi?

  4. #4
    Quote Originariamente inviato da terrornoize Visualizza il messaggio
    Sono aperto a qualsiasi consiglio...
    Gibra intendeva che tu abbia la possibilità di "tornare indietro" in caso di disastro dovuto ad una query che non fa quello che pensavi. Prima di un Delete sempre mettersi le spalle (ecco, sì... diciamo le spalle) al coperto.

  5. #5
    terrornoize non è in linea Scolaretto
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    Gibra intendeva che tu abbia la possibilità di "tornare indietro" in caso di disastro dovuto ad una query che non fa quello che pensavi. Prima di un Delete sempre mettersi le spalle (ecco, sì... diciamo le spalle) al coperto.
    Non ho necessità di tornare indietro se dovesse funzionare a dovere... per generarla ci impiego un attimo.

    E comunque anche la versione di gibra con gli alias non cambia nulla dal punto di vista prestazionale.
    Se avete consigli per velocizzare l'operazione sono ben graditi!

  6. #6
    Quote Originariamente inviato da terrornoize Visualizza il messaggio
    E comunque anche la versione di gibra con gli alias non cambia nulla dal punto di vista prestazionale.
    Può essere, da un punto di vista prestazionale, ma hai pensato al fatto che ID è presente sia in T1 sia in T2. Come fa a capire quale prendere per verificare che sia diversa da... quale? s'è stessa o l'altra? Ascolta sempre il Gibra.

    Quote Originariamente inviato da terrornoize Visualizza il messaggio
    per generarla ci impiego un attimo.
    Ah... aspetta un istante allora. Do una non risposta al tuo thread. Quella che stai facendo adesso è un'operazione una tantum oppure diventerà un'operazione ordinaria per eliminare di doppioni che si creeranno nel corso del tempo? Giro il concetto: devi sfoltire dei doppioni che derivano ad esempio da un'importazione di dati? Questa importazione dovrai rifarla periodicamente?
    Questo per vedere se è possibile ignorare i doppioni fin dal caricamento e non dopo.
    Ultima modifica di Phil_cattivocarattere; 16-04-2021 11:29 

  7. #7
    terrornoize non è in linea Scolaretto
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    Ah... aspetta un istante allora. Do una non risposta al tuo thread. Quella che stai facendo adesso è un'operazione una tantum oppure diventerà un'operazione ordinaria per eliminare di doppioni che si creeranno nel corso del tempo? Giro il concetto: devi sfoltire dei doppioni che derivano ad esempio da un'importazione di dati? Questa importazione dovrai rifarla periodicamente?
    Questo per vedere se è possibile ignorare i doppioni fin dal caricamento e non dopo.
    Sarà un'operazione ricorrente su una tabella che genero io via codice.
    Il problema è che è impossibile non creare dei duplicati per quello che devo fare.

    La mia idea era appunto creare questo contenitore con tutti i record ed poi eliminare i duplicati... però cazzarola non pensavo ci impiegasse così tanto tempo.

  8. #8
    Quote Originariamente inviato da terrornoize Visualizza il messaggio
    Sarà un'operazione ricorrente su una tabella che genero io via codice.
    Il problema è che è impossibile non creare dei duplicati per quello che devo fare.
    Ok, qui ti devo lasciare a chi ha esperienza concreta in merito oltre alla conoscenza della teoria.
    Invece di eliminare i duplicati da una tabella forse potresti caricare il risultato del tuo merge tra items in una tabella "d'appoggio" e trasferire da questa i valori univoci nella tabella che potrei chiamare definitiva. E magari se la tabella d'appoggio non ti serve più, la svuoti e poi la ripopoli con il nuovo merge. Pensaci.

  9. #9
    terrornoize non è in linea Scolaretto
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    Ok, qui ti devo lasciare a chi ha esperienza concreta in merito oltre alla conoscenza della teoria.
    Invece di eliminare i duplicati da una tabella forse potresti caricare il risultato del tuo merge tra items in una tabella "d'appoggio" e trasferire da questa i valori univoci nella tabella che potrei chiamare definitiva. E magari se la tabella d'appoggio non ti serve più, la svuoti e poi la ripopoli con il nuovo merge. Pensaci.
    Sai cos'è? che mi sembra la soluzione migliore... una bella select distinct in una tabella nuova di tutti quei valori e fine.

    Avrei preferito ripulire quella che avevo, ma se ci impiega ore a questo punto l'unico workaround mi sembra questo. Faccio generare una tabella temporanea con tutti i valori anche duplicati e travaso i valori univoci in una nuova tabella, eliminando poi il contenuto dell'altra temporanea. Corretto?

  10. #10
    Quote Originariamente inviato da terrornoize Visualizza il messaggio
    Corretto?
    Esattamente quello! La tabella "ufficiale" è sempre bella, pulita, con inserimento di "record buoni". I "dati sporchi" sono in un'altra tabella che poi svuoti e ripopoli per ulteriori caricamenti.

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Query eliminazione duplicati
    Da terrornoize nel forum Microsoft Access
    Risposte: 13
    Ultimo Post: 19-05-2016, 14:10
  2. Risposte: 14
    Ultimo Post: 08-04-2016, 01:53
  3. cerca verticale con eliminazione valori duplicati?
    Da mauros nel forum Microsoft Excel
    Risposte: 4
    Ultimo Post: 30-05-2015, 06:27
  4. Problema di eliminazione duplicati excel 2010
    Da Fabio Cerri nel forum Microsoft Excel
    Risposte: 7
    Ultimo Post: 22-08-2014, 02:40
  5. Eliminazione duplicati database
    Da malphis nel forum Visual Basic 6
    Risposte: 1
    Ultimo Post: 15-03-2008, 17:04