Tony Rogerson questo mese ha fatto una serie di post davvero interessanti (come già vi sarete accorti!)
Questo in particolare è molto interessante, perchè dimostra senza ombra di dubbio quanto sia importante evitare l'esecuzione di query ad-hoc che non fanno uso di parametri:
http://sqlblogcasts.com/blogs/tonyrogerson/archive/2007/07/07/procedure-cache-tuning-sizing-from-1gbyte-to-768kbytes-increase-the-size-of-usable-data-cache.aspx
Per chi non mastica molto la linga di Albione (che citazione colta eh? Giusto per far vedere che non mi interesso solo di SQL, e poi ascoltando gli Skyclad non potevo scrivere altro!), riassumo in poche parole (a fatti) il succo del discorso.
L'utilizzo di query ad-hoc in questa forma
select .... from .... where <colonna> = <costante>
piuttotosto che
set @sql = 'select .... from .... where <colonna> = @p'
exec sp_executesql @sql, N' @p int', @p
è semplicemente deleterio per le prestazioni.
Con un ciclo di 100000 iterazioni, si hanno valori che passano da più di 1GB (!!!) a meno di 1 MB (!!!!!!!) per quanto riguarda l'uso della memoria per la buffer cache ed il tempo di esecuzione totale passa da più di 300 secondi a 5!!!!!!
Non penso che ci sia bisogno di aggiungere altro....