PDA

View Full Version : database e null (prestazioni)


Amodio
18-04-2006, 07:53
salve a tutti

ho creato una routine per l'inserimento nel database di alcuni valori
ho fatto diverse if per i valori per vedere se erano valorizzati, e in caso contrario li impostavo a "Null",ovviamente concatenando il tutto per creare la stringa SQL

esempio:
if variabile ="" then
variabile ="NUll" 'imposto a null il valore
else
variabile="'" & replace(variabile,"'","''") & "'" 'metto apici e replace
end if

il mio capo guardando si è quasi spaventando
dichiarando che tutte quelle if avrebbero influito sulle prestazioni, e che sarebbe meglio non gestire i null,anzi mettere stringa vuota nel db

il mio capo ha 20 anni di esperienza, e non mi va di contraddirlo, ma secondo voi è corretto quello che ha detto?
in effetti dovrei gestire una quindicina di variabile e controllare il valore e impostarle a null se sono vuote,e il null implica piu velocita di esecuzione nelle query nel database

cosa mi dite? ho un forte dubbio
grazie

Riordian
18-04-2006, 08:13
secondo me non è corretto ciò che ti ha detto, stringa vuota e null sono due cose diverse nel DB (usi sql server?) A parte che se si tratta di un int o datetime credo ti darebbe dei problemi, ma, ammettendo che tu abbia solo tipi varchar char etc, ci sarebbero dei problemi anche con eventuali Foreign key per esempio, cosa che con il null non avresti.
Io faccio sempre come fai te, se ho "" la pongo a null, per quanto riguarda le prestazioni, scegliere migliorarle eliminando le condizioni if, mi sembra una cosa poco redditizia.

fabianoda
18-04-2006, 08:20
Non saprei se il null implichi maggiore velocità... nota che in una query di selezione quando trovi un null per evitare problemi devi usare un costrutto ifnull() o cose del genere (a seconda del db).

Dipende molto da che db usi credo, e dalle strategie di ottimizzazione che ha. Nota comunque che può essere molto più redditizio ottimizzare il database tramite le apposite utility, o ottimizzare le query di selezione.


La presenza di stringhe vuote e di null non può a mio parere essere considerata la stessa cosa: sono due cose differenti, e se è così c'è un motivo.