Peter Scharlock rientrato dalla Convergence Conference 2010 ha chiarito, con un interessante articolo su SQLCAT blog, l’utilizzo di XML SHOWPLAN.
Questa caratteristica, che SQL Server mette a disposizione, non viene spesso utilizzata, ma sarebbe di grande aiuto per identificare e risolvere i problemi legati a parameter sniffing, specialmente nelle applicazioni gestionali.
Fondamentalmente, la questione ruota attorno al fatto che SQL Server memorizza nella cache i piani di esecuzione delle query, la prima volta che queste vengono compilate ed eseguite. Mantenere nella cache i piani di esecuzione migliora le performance perché SQL Server non sarà costretto a ricompilare la stessa query ogni volta che riceve una richiesta di esecuzione (della stessa). Questo significa anche che il piano di esecuzione viene creato e mantenuto tenendo conto dei valori dei parametri passati alla prima esecuzione della query.
Nella maggior parte dei casi questa tecnica produce dei benefici, ma in alcune situazioni potrebbero esserci problemi … come descrive Peter Scharlock: http://blogs.msdn.com/b/sqlcat/archive/2010/06/09/identifying-query-compile-runtime-parameter-values-using-xml-showplan-output.aspx