Criar um novo guia de plano
Você pode criar um guia de plano no SQL Server 2014 usando SQL Server Management Studio ou Transact-SQL. Guias de plano influenciam a otimização de consulta, anexando a elas dicas de consulta ou um plano de consulta fixo. No guia de plano, especifique a instrução Transact-SQL que deve ser otimizada, e uma cláusula OPTION que contenha as dicas de consulta a serem usadas ou um plano de consulta específico a ser usado para otimizar a consulta. Quando a consulta é executada, o otimizador de consulta corresponde a instrução Transact-SQL ao guia de plano e anexa a cláusula OPTION à consulta em tempo de execução ou usa o plano de consulta especificado.
Neste tópico
Antes de começar:
Para criar um guia de plano, usando:
Antes de começar
Limitações e Restrições
Os argumentos para sp_create_plan_guide devem ser fornecidos na ordem em que aparecem. Quando você aplica valores para os parâmetros de
sp_create_plan_guide
, todos os nomes de parâmetros devem ser especificados explicitamente ou nenhum deles deve ser especificado. Por exemplo, se@name =
for especificado,@stmt =
,@type =
, entre outros, também deverão ser. Da mesma forma, se@name =
for omitido e apenas o valor de parâmetro for fornecido, os nomes de parâmetro restantes deverão ser omitidos também e apenas os seus valores, fornecidos. Os nomes de argumento são usados apenas para fins descritivos, para ajudar compreender a sintaxe. SQL Server não verifica se o nome de parâmetro especificado corresponde ao nome do parâmetro na posição em que o nome é usado.Você pode criar mais de um guia de plano OBJECT ou SQL para a mesma consulta e lote ou módulo. Porém, só um guia de plano pode ser ativado em um determinado momento.
Os guias de plano OBJECT não podem ser criados para um valor @module_or_batch que referencie um procedimento armazenado, uma função ou um gatilho DML que especifique a cláusula WITH ENCRYPTION ou que seja temporário.
A tentativa de cancelar ou modificar uma função, procedimento armazenado ou gatilho DML referenciado por um guia de plano, habilitado ou desabilitado, provoca um erro. A tentativa de descartar uma tabela com um gatilho definido nela que é mencionado por um guia de plano também causa um erro.
Segurança
Permissões
A criação de um guia de plano do tipo OBJECT requer a permissão ALTER no objeto mencionado. A criação de um guia de plano do tipo SQL ou TEMPLATE requer a permissão ALTER no banco de dados atual.
Como usar o SQL Server Management Studio.
Para criar um guia de plano
Clique no sinal de adição para expandir o banco de dados no qual você deseja criar um guia de plano e clique no sinal de adição para expandir a pasta Programação .
Clique com o botão direito do mouse na pasta Guias de Plano e selecione Novo Guia de Plano....
Na caixa de diálogo Novo Guia de Plano , na caixa Nome , digite o nome do guia de plano.
Na caixa Instrução , insira a instrução Transact-SQL na qual o guia de plano deve ser aplicado.
Na lista Tipo de escopo, selecione o tipo de entidade na qual a instrução Transact-SQL é exibida. Isso especifica o contexto para correspondência da instrução Transact-SQL com o guia de plano. Os valores possíveis são OBJECT, SQLe TEMPLATE.
Na caixa Lote de escopo , insira o texto em lote no qual a instrução Transact-SQL é exibida. O texto de lote não pode incluir uma instrução USE``database . A caixa Lote de escopo está disponível apenas quando SQL é selecionado como um tipo de escopo. Se nada for inserido na caixa de lote de escopo quando o SQL for o tipo de escopo, o valor do texto de lote será definido com o mesmo valor que a caixa Instrução .
Na lista Nome do esquema de escopo , digite o nome do esquema no qual o objeto está contido. A caixa Nome do esquema de escopo está disponível apenas quando Objeto é selecionado como um tipo de escopo.
Na caixa Nome do objeto Scope , insira o nome do procedimento armazenado Transact-SQL, a função escalar definida pelo usuário, a função com valor de tabela de várias instruções ou o gatilho DML no qual a instrução Transact-SQL é exibida. A caixa Nome do objeto de escopo está disponível apenas quando Objeto é selecionado como um tipo de escopo.
Na caixa Parâmetros, insira o nome do parâmetro e o tipo de dados de todos os parâmetros inseridos na instrução Transact-SQL.
Parâmetros são aplicados somente quando uma das seguintes condições for verdadeira:
O tipo de escopo é SQL ou TEMPLATE. No caso de TEMPLATE, parâmetros não devem ser NULL.
A instrução Transact-SQL é enviada usando sp_executesql e um valor para o parâmetro é especificado ou SQL Server envia internamente uma instrução após parametrizá-la.
Na caixa Dicas, insira as dicas de consulta ou o plano de consulta a ser aplicado à instrução Transact-SQL. Para especificar uma ou mais dicas de consulta, digite uma cláusula OPTION válida.
Clique em OK.
Usando o Transact-SQL
Para criar um guia de plano
No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.
Na barra Padrão, clique em Nova Consulta.
Copie e cole o exemplo a seguir na janela de consulta e clique em Executar.
-- 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)';
Para obter mais informações, consulte sp_create_plan_guide (Transact-SQL).