Database e null (prestazioni)

martedì 18 aprile 2006 - 09.10

Amodio Profilo | Expert

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:
[CODE]if variabile ="" then variabile ="NUll" 'imposto a null il valore else variabile="'" & replace(variabile,"'","''") & "'" 'metto apici e replace end if[/CODE]

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

lbenaglia Profilo | Guru

>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

Ciao Amodio,

La soluzione ideale sarebbe quella di delegare al data tier la logica di accesso ai dati.
In base al dbms utilizzato ed al linguaggio di programmazione questo si traduce in una serie di stored procedures e componenti.
Per quanto riguarda l'utilizzo o meno del valore NULL esistono diverse scuole di pensiero.
Alcuni puristi non lo contemplano nemmeno, creando una nuova tabella da relazionare con quella base per ogni colonna che potenzialmente può assumere un valore NULL.
Personalmente cerco di farne un uso "ragionevole", nel senso che non sono così radicale ma se posso evito di abusarne (ad esempio definendo dei constraint di default sulle colonne delle tabelle ed assegnando dei valori di default ai parametri delle stored procedures).
Se rivedi il tuo progetto in quest'ottica potrai evitare di utilizzare tutta quella serie di IF lato client, accontentando il tuo capo e rendendo la tua applicazione più efficiente e manutenibile.

>grazie
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

trinity Profilo | Guru

Ovviamente meno codice scrivi meglio è ma dal mio punto di vista, quando creo una tabella dove potenzialmente possono essere salvati valori null, alla colonna di riferimento imposto il paramentro che "accetta valori nulli", per l'accesso ai dati concordo con Lorenzo, ossia sul programma gestisci codice che riguarda l'applicativo mentre per la lettura, salvataggio ed eliminazione dati in sintassi Sql ti consiglio ti utilizzare le stored procedures le quali le richiami dall'applicativo. Utilizzare le stored procedures ti comporta + prestazioni, maggiore affidabilità per i dati

Ciao
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

Amodio Profilo | Expert

wow grazie per il chiarimento

ora solo una cosa
nei vecchi back-up di codici che ho, non trovo più dove ho utilizzato la stored procedure per fare gli inserimenti in sql server

potrei avere un piccolo esempio da voi oppure un link? tanto per rischiarirmi le idee
grazie

trinity Profilo | Guru

Create Procedure [dbo].[nometabella]

(
@codice int,
@descrzione varchar(100)
)

As

Insert into [dbo].[nometabella] (id,descrizione) Values (@codice,@descrizione)

go
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/

lbenaglia Profilo | Guru

>wow grazie per il chiarimento
Prego.

>potrei avere un piccolo esempio da voi oppure un link? tanto
>per rischiarirmi le idee

Ciao Amodio,

i Books Online sono una risorsa preziosissima per rispondere ai tuoi dubbi.
Leggi attentamente questi paragrafi:

"Working with Stored Procedures"
http://msdn2.microsoft.com/en-us/library/ms176113.aspx

>grazie
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5