Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Blocco sistema con query di eliminazione
venerdì 17 ottobre 2008 - 18.47
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
jampicoll
Profilo
| Junior Member
103
messaggi | Data Invio:
ven 17 ott 2008 - 18:47
in pratica dovrei eliminare tutte le righe che hanno lo stesso numero di telefono.
Il database ha 220.000 righe
ho preparato questo codice per una query:
DELETE *
FROM ANAGRAFICHE
WHERE ANAGRAFICHE.[ANAGRAFICA TELEFONO] NOT IN
(
SELECT DISTINCT ANAGRAFICHE.[ANAGRAFICA TELEFONO]
FROM ANAGRAFICHE
);
Il problema è che è come se si bloccasse. Non capisco se lavora o va avanti. Capisco che sono parecchie righe ma....
C'è un codice che possa fare lo stesso risultato con un minore lavoro?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
sab 18 ott 2008 - 20:37
>in pratica dovrei eliminare tutte le righe che hanno lo stesso
>numero di telefono.
>Il database ha 220.000 righe
>ho preparato questo codice per una query:
Ciao!
Guarda che con la query che hai scritto stai cercando di "Eliminare i record della tabella *anagrafica* in cui la colonna *telefono* non è compresa tra i valori di *telefono* presi una ed una sola volta dalla stessa tabella" ovvero, non cancelli nulla.. La durata probabilmente è dovuta alla subquery, fatta su di un campo quasi sicuramente non indicizzato.
>C'è un codice che possa fare lo stesso risultato con un minore lavoro?
Devi eliminare TUTTE le righe in cui il telefono appare più di una volta con lo stesso valore?
Oppure tutte tranne UNA, che è quella che tieni? Ed in questo caso, secondo che criterio?
Comunque, per essere precisi, indicaci il DBMS che stai utilizzando, posta la CREATE della tabella e qualche insert di esempio, indicando un'anteprima di risultato che vorresti ottenere.. Giusto per capire e risolvere il tuo problema
Grazie, ciao!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
jampicoll
Profilo
| Junior Member
103
messaggi | Data Invio:
dom 19 ott 2008 - 00:44
Le devo eliminare tutte tranne una.
Che significa "non indicizzato"
Sto utilizzando MS Access 2003.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 21 ott 2008 - 03:17
>Le devo eliminare tutte tranne una.
http://www.bluemoosetech.com/microsoft-access-tutorial.php?jid=25&title=Microsoft%20Access%20Remove%20Duplicate%20Records
http://www.databasejournal.com/features/msaccess/article.php/3077791
Oppure, se puoi permettertelo, fai la distinct di tutto il record (se i duplicati sono record identici) e li scrivi su di una tabella di appoggio, poi elimini o rinomini l'originale, rinominando la nuova tabella di appoggio col nome della tabella di partenza..
>Che significa "non indicizzato"
Non indicizzato significa che non c'è nessuna struttura di supporto (indice) che permetta di puntare al valore con efficienza..
Quindi il tempo si dilata visto che l'elaborazione è onerosa per cercare di ottenere la distinct di un valore salvato in maniera "disordinata" e difficilmente reperibile con prestazioni buone.
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
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 !