SQL Server ed ALM su database


Il blog di Alessandro Alpi
Archivio Posts
Anno 2017

Anno 2016

Anno 2015

Anno 2014

Anno 2013

Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

SQL Server Programming - Come simulare le costanti?

Nel post precedente, ho parlato di come il motore interpreta le variabili locali, con la possibilità che questo possa anche degradare le performance delle nostre query.
In effetti, lavorando anche lato dev, mi rendo conto di come la mancanza di vere e proprie COSTANTI in programmabilità T-SQL si faccia sentire.
Ragion per cui mi sono posto un (credo) annoso problema, ovvero: "Come gestire le nostre CONST?".

Come dicevamo qui, non è per nulla indicato usare variabili locali, nemmeno all'interno di stored procedure. E' vero, la documentazione ci invita a seguire altre strade, come:
- utilizzare la sp_executeSQL
Sinceramente non vorrei andare a creare per ogni variabile locale che vorrei usare come costante, una stringa dinamica, il rovescio della medaglia è immediato, 
non so cosa vado a scrivere nel mio sql dinamico, perdo tutto quanto posso catturare in compilazione delle stored procedure e le eventuali dipendenze.. 
Insomma non la trovo la via migliore se non nel particolare.
- non utilizzare variabili locali bensì literal diretti
Se nelle stored procedure volessi includere un pochino di logica per cui già una literal va ripetuto un paio di volte, ci perdo in manutenibilità e aumento la possibilità di errore.
Pensate ad una costante usata in 5 posti, è comodo dichiararla in testa, ma è anche più affidabile e sicuro, perchè mai dovrei scrivere 5 volte lo stesso valore? E poi, quando lo devo cambiare? 
Se chi modifica non sa che sono 5 e me ne cambia 3? Potenzialmente distruggo anche una parte di consistenza applicativa.

Per ora, qualora mi servano costanti, utilizzo una variabile locale, i piani direi che reggono benone e le macchine mi danno risultati eccellenti. Sicuramente potrei migliorare di un po' le performance, ma, seguendo o il primo o il secondo metodo, perderei troppe altre cose a mio modo di vedere. Ho trovato però questo link interessante, su cui varrebbe la pena di fare un pensierino. Il CLR potrebbe essere una buona soluzione.

Stay Tuned! 

Categoria: Transact-SQL
lunedì, 16 mag 2011 Ore. 01.37
Statistiche
  • Views Home Page: 412.535
  • Views Posts: 763.093
  • Views Gallerie: 444.123
  • n° Posts: 480
  • n° Commenti: 270





















Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003