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
Database e null (prestazioni)
martedì 18 aprile 2006 - 09.10
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Amodio
Profilo
| Expert
525
messaggi | Data Invio:
mar 18 apr 2006 - 09:10
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
5.625
messaggi | Data Invio:
mar 18 apr 2006 - 10:13
>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
3.465
messaggi | Data Invio:
mar 18 apr 2006 - 11:33
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
525
messaggi | Data Invio:
mar 18 apr 2006 - 12:52
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
3.465
messaggi | Data Invio:
mar 18 apr 2006 - 13:22
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
5.625
messaggi | Data Invio:
mar 18 apr 2006 - 13:27
>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
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 !