SQL Server 2008 SP1 CU 5 / RTM CU 8

E’ stata rilasciata una Cumulative Update per SQL 2008 che mette a posto un problema che impediva il corretto funzionamento dell’opzione RECOMPILE, fondamentale per poter gestire in modo performante delle condizioni di ricerca dinamiche all’interno di stored procedure.

Per chi c’era l’anno scorso, ne abbiamo parlato proprio alla WPC nella sessione SQL Server 2008 Developing for Performance

Con l’opzione RECOMPILE è possibile scrivere query di questo tipo

select
    *
from
    dbo.Ordini
where
    (NomeDestinatario = @Nome or @Nome is null)
and
    (CittaDestinatario = @Citta or @Citta is null)
and
    (CAPDestinatario = @CAP or @CAP is null)
and
    (DataOrdine = @DataOrdine or @DataOrdine is null)
option(recompile)

ed avere sempre il piano di esecuzione migliore, anziche uno generico, in base ai valori dei parametri passati.

Purtroppo un bug impediva il corretto funzionamento dei questa opzione…che, come anticipato, è finalmente stato risolto, e la fix è inclusa nel CU5 SP1 o CU8 RTM.

Da scaricare!

Published sabato 21 novembre 2009 18.21 by dmauri

Comments

# re: SQL Server 2008 SP1 CU 5 / RTM CU 8

domenica 22 novembre 2009 17.57 by AlessandroD

Cavoli, è dalla versione 2005 che quello hint esiste e ancora di litigano sopra?

Qualche tempo fa ho discusso con marc a questo proposito e appunto pareva ben strano che non si comportasse come sembrava naturale.

Allo stesso modo del with recompile sulla stored procedure, pure lui non dovrebbe permettere di generare piani parametrici ma soltanto tarati sui valori correnti dei parametri passati all sp ad ogni chiamata.

Sono 2 cose che credo siano fondamentali se poi si vuole cavalcare la battaglia contro l'uso del t-sql dinamico e l'allergia a causa delle performance verso le sp.

Ma MS non aiuta molto in questo senso... :-)

# re: SQL Server 2008 SP1 CU 5 / RTM CU 8

lunedì 23 novembre 2009 8.05 by dmauri

@AlessandroD

Beh, ora finalmente è tutto a posto, almeno per l'option recompile a livello di query....