Criar um novo guia de plano

Você pode criar um guia de plano no SQL Server 2012 usando o SQL Server Management Studio ou o 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, especifica-se a instrução Transact-SQL que se deseja otimizar e uma cláusula OPTION que contenha as dicas de consulta que se deseja usar ou um plano de consulta específico que se queira usar para otimizar a consulta. Quando a consulta é executada, o otimizador de consultas faz a correspondência da instrução Transact-SQL com o guia de plano, anexando a cláusula OPTION à consulta em tempo de execução ou usando o plano de consulta especificado.

Neste tópico

  • Antes de começar:

    Limitações e restrições

    Segurança

  • Para criar um guia de plano, usando:

    SQL Server Management Studio

    Transact-SQL

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. O 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 mencione um procedimento armazenado, função ou gatilho DML que especifique a cláusula WITH ENCRYPTION ou que seja temporário.

  • A tentativa de descartar ou modificar uma função, procedimento armazenado ou gatilho DML mencionado por um guia de plano, esteja ele habilitado ou não, causa 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.

Ícone de seta usado com o link Voltar ao Início[Início]

Usando o SQL Server Management Studio

Para criar um guia de plano

  1. 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.

  2. Clique com o botão direito do mouse na pasta Guias de Plano e selecione Novo Guia de Plano….

  3. Na caixa de diálogo Novo Guia de Plano, na caixa Nome, digite o nome do guia de plano.

  4. Na caixa Instrução, insira a instrução Transact-SQL à qual o guia de plano deve ser aplicado.

  5. Na lista Tipo de escopo, selecione o tipo de entidade na qual a instrução Transact-SQL aparece. Isso especifica o contexto para se fazer a correspondência da instrução Transact-SQL ao guia de plano. Os valores possíveis são OBJECT, SQL e TEMPLATE.

  6. Na caixa Lote de escopo, digite o texto de lote no qual a instrução Transact-SQL aparece. 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.

  7. 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.

  8. Na caixa Nome do objeto de escopo for, digite o nome do procedimento armazenado Transact-SQL, função escalar definida pelo usuário, função com valor de tabela de várias instruções ou gatilho DML no qual a instrução Transact-SQL aparece. A caixa Nome do objeto de escopo está disponível apenas quando Objeto é selecionado como um tipo de escopo.

  9. Na caixa Parâmetros, digite o nome do parâmetro e os tipos 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-se sp_executesql e um valor para o parâmetro é especificado, ou o SQL Server envia internamente uma instrução depois de parametrizá-la.

  10. Na caixa Dicas, digite 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.

  11. Clique em OK.

Ícone de seta usado com o link Voltar ao Início[Início]

Usando Transact-SQL

Para criar um guia de plano

  1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados.

  2. Na barra Padrão, clique em Nova Consulta.

  3. 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).

Ícone de seta usado com o link Voltar ao Início[Início]