Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile creare una guida di piano in SQL Server 2014 usando SQL Server Management Studio o Transact-SQL. Le guide di piano influiscono sull'ottimizzazione delle query mediante l'aggiunta di hint o di un piano di query fisso. In una guida di piano, viene specificata l'istruzione Transact-SQL da ottimizzare e la clausola OPTION che contiene gli hint per la query da utilizzare o un piano di query specifico da utilizzare per ottimizzare la query. Quando la query viene eseguita, query optimizer corrisponde all'istruzione Transact-SQL alla guida del piano e collega la clausola OPTION alla query in fase di esecuzione o usa il piano di query specificato.
Contenuto dell'articolo
Prima di iniziare:
Per creare una guida di piano utilizzando:
Prima di iniziare
Limitazioni e restrizioni
Gli argomenti per sp_create_plan_guide devono essere inseriti nell'ordine illustrato. Quando si specificano valori per i parametri di
sp_create_plan_guide
, è necessario specificare in modo esplicito tutti i nomi dei parametri oppure nessuno. Se ad esempio si specifica@name =
, è necessario specificare anche@stmt =
,@type =
e così via. Analogamente, se@name =
viene omesso e viene specificato soltanto il valore del parametro, è necessario omettere anche i nomi dei parametri restanti e specificarne solo il valore. I nomi degli argomenti hanno scopo esclusivamente descrittivo, per facilitare la comprensione della sintassi. SQL Server non verifica che il nome del parametro specificato corrisponda al nome del parametro nella posizione in cui viene usato il nome.È possibile creare più guide di piano OBJECT o SQL per la stessa query e batch o modulo. Tuttavia è possibile abilitare una sola guida di piano alla volta.
Non è possibile creare guide di piano di tipo OBJECT per un valore @module_or_batch che fa riferimento a una stored procedure, una funzione o un trigger DML che specifica la clausola WITH ENCRYPTION o che è temporaneo.
Se si tenta di eliminare o modificare una funzione, una stored procedure o un trigger DML a cui viene fatto riferimento in una guida di piano abilitata o disabilitata, viene generato un errore. Viene generato un errore anche se si cerca di eliminare una tabella per la quale è stato definito un trigger a cui una guida di piano fa riferimento.
Sicurezza
Autorizzazioni
Per creare una guida di piano di tipo OBJECT, è necessario disporre dell'autorizzazione ALTER per l'oggetto a cui si fa riferimento. Per creare una guida di piano di tipo SQL o TEMPLATE, è necessario disporre dell'autorizzazione ALTER per il database corrente.
Uso di SQL Server Management Studio
Per creare una guida di piano
Fare clic sul segno più per espandere il database in cui si desidera creare una guida di piano, quindi fare clic sul segno più per espandere la cartella Programmabilità .
Fare clic con il pulsante destro del mouse sulla cartella Guide piano e scegliere Nuova guida piano....
Nella casella Nome della finestra di dialogo Nuova guida di piano immettere il nome della guida di piano.
Nella casella Istruzione immettere l'istruzione Transact-SQL in base alla quale verrà applicata la guida al piano.
Nell'elenco Tipo di ambito selezionare il tipo di entità in cui viene visualizzata l'istruzione Transact-SQL. In questo modo viene specificato il contesto per la corrispondenza dell'istruzione Transact-SQL alla guida al piano. I valori possibili sono OBJECT, SQLe TEMPLATE.
Nella casella Batch Scope immettere il testo batch in cui viene visualizzata l'istruzione Transact-SQL. Nel testo del batch non può essere inclusa un'istruzione USE``database . La casella Batch ambito è disponibile solo quando come tipo di ambito è selezionato SQL . Se non è stato immesso alcun dato nella casella relativa al batch ambito quando SQL è il tipo di ambito, il valore del testo del batch viene impostato sullo stesso valore inserito nella casella Istruzione .
Nell'elenco Nome schema ambito immettere il nome dello schema in cui è contenuto l'oggetto. La casella Nome schema ambito è disponibile solo quando come tipo di ambito è selezionato Oggetto .
Nella casella Nome oggetto Ambito immettere il nome della stored procedure Transact-SQL, la funzione scalare definita dall'utente, la funzione con valori di tabella multistatement o il trigger DML in cui viene visualizzata l'istruzione Transact-SQL. La casella Nome oggetto ambito è disponibile solo quando come tipo di ambito è selezionato Oggetto .
Nella casella Parametri immettere il nome del parametro e il tipo di dati di tutti i parametri incorporati nell'istruzione Transact-SQL.
I parametri vengono applicati solo nei casi seguenti:
Il tipo di ambito è SQL o TEMPLATE. Se TEMPLATE, i parametri non devono essere NULL.
L'istruzione Transact-SQL viene inviata usando sp_executesql e viene specificato un valore per il parametro oppure SQL Server invia internamente un'istruzione dopo averla parametrizzata.
Nella casella Hint immettere gli hint di query o il piano di query da applicare all'istruzione Transact-SQL. Per specificare uno o più hint per la query, immettere una clausola OPTION valida.
Fare clic su OK.
Uso di Transact-SQL
Per creare una guida di piano
In Esplora oggetti connettersi a un'istanza del motore di database.
Sulla barra Standard fare clic su Nuova query.
Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.
-- creates a plan guide named Guide1 based on a SQL statement EXEC sp_create_plan_guide @name = N'Guide1', @stmt = N'SELECT TOP 1 * FROM Sales.SalesOrderHeader ORDER BY OrderDate DESC', @type = N'SQL', @module_or_batch = NULL, @params = NULL, @hints = N'OPTION (MAXDOP 1)';
Per altre informazioni, vedere sp_create_plan_guide (Transact-SQL).