Associare gli hint per le query a una guida di piano

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

In una guida di piano è possibile utilizzare qualsiasi combinazione valida di hint di query. Quando una guida di piano corrisponde a una query, la clausola OPTION specificata nella clausola hints di una guida di piano viene aggiunta alla query prima che questa venga compilata e ottimizzata. Se una query associata a una guida di piano contiene già una clausola OPTION, i suggerimenti di query specificati nella guida di piano sostituiscono quelli presenti nella query. Perché una guida di piano possa corrispondere a una query che già contiene una clausola OPTION è tuttavia necessario includere la clausola OPTION della query quando si specifica il testo della query da far corrispondere nell'istruzione sp_create_plan_guide. Se si desidera che gli hint specificati nella guida di piano vengano aggiunti agli hint già esistenti nella query, invece di sostituirli è necessario specificare sia gli hint originali che gli hint aggiuntivi nella clausola OPTION della guida di piano.

Attenzione

L'utilizzo non corretto degli hint di query nelle guide di piano può provocare problemi di compilazione, esecuzione o prestazioni. È consigliabile che le guide di piano vengano utilizzate solo da sviluppatori e amministratori esperti di database.

Hint per le query comuni utilizzate nelle guide di piano

Le query che possono trarre vantaggio dall'utilizzo di guide di piano sono in genere basate su parametri ed è possibile che le prestazioni siano insufficienti a causa dell'utilizzo di piani di query memorizzati nella cache nei quali i valori dei parametri non rappresentano il caso peggiore o lo scenario più rappresentativo. Per la risoluzione di questo problema è possibile utilizzare gli hint per le query OPTIMIZE FOR e RECOMPILE. OPTIMIZE FOR indica a SQL Server di utilizzare un valore particolare per un parametro quando la query viene ottimizzata. RECOMPILE indica al server di eliminare un piano di query dopo l'esecuzione, forzando Query Optimizer alla compilazione di un nuovo piano di query alla successiva esecuzione della stessa query. Per un esempio, vedere Guide del piano.

Inoltre, è possibile specificare gli hint di tabella INDEX, FORCESCAN e FORCESEEK come hint di query. Se specificati come hint per le query, tali hint si comportano come un hint di vista o di una tabella inline. L'hint INDEX impone a Query Optimizer di usare solo gli indici specificati per accedere ai dati nella tabella o nella vista a cui si fa riferimento. L’hint FORCESEEK impone a Optimizer di utilizzare soltanto un’operazione Index Seek per accedere ai dati nella tabella o nella vista a cui si fa riferimento. Questi hint forniscono funzionalità aggiuntive per la guida di piano e consentono di esercitare un maggiore controllo sull'ottimizzazione delle query che utilizzano la guida di piano.