E se il detto é vero, allora oggi sarà un giorno non male.
Cercando di combattere il sonno enorme, mi sono buttato a seguire la sessione sull'ottimizzazione delle stored procedures di Kimberly Tripp, che già aveva dimostrato la sua qualità nella sessione un po meno tecnica sui Tips & Tricks.
In questa interessantissima sessione si é riaffermata una delle mie speaker preferite quì a TechEd, sapendo come interagire con il pubblico in maniera da non farlo addormentare (una sessione delle 8 e 30 é dura!) e soprattutto facendo vedere un sacco di demo!
Gran parte della sessione si é incentrata sul RECOMPILE (Search page) delle stored procedure, su come non sempre sia il caso, su come invece ogni tanto sia necessario. Ha soprattutto spiegato la gestione basata sui PLAN, e come SQL server li usi per diverse tipologie di query, che in alcuni casi può non essere l'ideale. E quindi passata ad illustrare i vari metodi di recompilazione per invalidare questi plan nel caso sia necessario, se sia meglio creare direttamente con l'opzione WITH RECOMPILE, oppure se fare EXEC con questa opzione, o ancora se usare una stored procedure apposta per invalidare il piano senza però ricompilare, parlando anche di esecuzione dinamica di codice e di codice modulare. Non c'é una risposta unica, perché ovviametne bisogna vedere sempre che cosa serve, ma l'esecuzione modulare mi ha molto interessato e vedrò di approfondirla se ci riesco.
Il resto della sessione era un repository di brevi TIP, molti già noti, ma io ve li cito così nel caso non li sappiate potete aggiornarvi:
1: _non_ usare SP_ nel nome della stored procedure, perché il motore di SQL server va a cercare nel DB master prima che nel vostro e fa il doppio dell'IO.
2: QUOTENAME leva la possibilità di SQL Injection (ES: QUOTENAME(@username, ''' non permette l'uso dell'injection del tipo "pippo' or 1=1; drop table foo --") ed é lato server!
3: Usare NomeColonna IS NULL invece di NomeColonna = NULL
4: Usare le View: sono piu semplici da gestire e da ottimizzare.
Come risorse vi consiglio il suo sito (www.SQLSkills.com) che contiene anche tutti gli script di questa sessione e di quella precedente e la Q263889 (http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q263/8/89.asp&NoWebContent=1) che potrebbe avere alcune informazioni interessanti!