Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[SQL] Ottimizzazione query

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[SQL] Ottimizzazione query

Messaggioda DilanDog » mer giu 28, 2006 1:52 pm

Dovendo eseguire una query di tipo Delete su una tabella con circa 20000 record, che nel 99% dei casi in base ai filtri utilizzati non andrebbe di fatto ad eliminare nulla perché non c'è nulla da eliminare, è più veloce eseguire direttamente la query di eliminazione oppure eseguire prima una query di test per verificare se ci sono effettivamente dei record da eliminare e quindi eseguire solo in questo caso la query di eliminazione?

Esempio:

Codice: Seleziona tutto
DELETE * FROM Tabella WHERE a=1 AND b=2


oppure

Codice: Seleziona tutto
SELECT COUNT(Id) AS TotRecord FROM Tabella WHERE a=1 AND b=2
if TotRecord >0 then
    'Esegue la query di eliminazione
end if
[/code]
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano

Messaggioda atomik » mer giu 28, 2006 6:17 pm

Probabilmente la prima soluzione e' piu' veloce (perche' esegue un controllo in meno su una variabile), ma dipende molto da come sono implementate DELETE e SELECT sull'RDBMS...

Ad ogni modo 20000 record non sono tanti, quindi non mi preoccuperei piu' di tanto.

Per un lavoro di questo genere ti consiglio di usare un trigger.
Avatar utente
atomik
Senior Member
Senior Member
 
Messaggi: 266
Iscritto il: gio feb 24, 2005 1:42 pm
Località: Catania

Messaggioda tux2 » lun ago 07, 2006 1:37 pm

Dipende molto da quanto questa query in particolare è critica per la tua applicazione.

Per critica intendo, quante occorrenze di tale query sono presenti in proporzione al totale.

Tieni presente che in una applicazione media, immaginando di suddividere le query in 2 grandi gruppi.

Quelle che leggono solo dal database (SELECT più o meno complesse) e quelle che possono anche apportare delle modifiche ( UPDATE, INSERT, DELETE ).

Tipicamente il primo gruppo supera, in quantità, di qualche ordine di grandezza il secondo gruppo.

Vale a dire che solitamente è molto più importante ottimizzare le performance delle SELECT che non delle altre operazioni. Tanto più che statisticamente le SELECT possono raggiungere complessità molto alte più facilmente. Raramente si hanno UPDATE, DELETE , o INSERT annidate o che coinvolgono più di una tabella.
Le persone si dividono in 10 categorie,
quelle che conoscono il binario e quelle che non lo conoscono.
Avatar utente
tux2
Neo Iscritto
Neo Iscritto
 
Messaggi: 22
Iscritto il: lun ago 07, 2006 10:08 am


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising