Novo Guia de Plano

Use essa página para criar um guia de plano no banco de dados selecionado. Essa página é acessada clicando-se com o botão direito do mouse em Guias de Plano em Pesquisador de Objetos (na pasta Programação) e selecionandoNovo Guia de Plano.

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.

Opções

  • Nome
    Digite o nome do guia de plano.

    Os nomes de guia de plano têm escopo no banco de dados atual. O nome deve estar de acordo com as regras para identificadores ms175874(v=sql.100).md e não deve iniciar com o sinal de número (#). O comprimento máximo é 124 caracteres.

  • Instrução
    Digite a instrução Transact-SQL em relação a qual o guia de plano deve ser aplicado. O tamanho da instrução só está limitado pela memória disponível do servidor.

    A instrução deve ser fornecida de forma a permitir que o otimizador de consulta faça uma correspondência dela com a instrução fornecida dentro do lote ou objeto. Para obter mais informações, consulte Criar e implementar guias de plano.

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

  • Lote de escopo
    Se aplicável, digite o texto de lote no qual a instrução Transact-SQL aparece. O texto de lote não pode incluir uma instrução USEdatabase.

    Para que um plano de guia seja compatível com um lote enviado de um aplicativo, o texto do lote deve ser fornecido no mesmo formato, caractere por caractere, quando for submetido a SQL Server. Nenhuma conversão interna é executada para facilitar essa correspondência.

    Quando o tipo de escopo for SQL e um texto de lote não for especificado, o valor do texto de lote é definido para o valor da Instrução. Quando o tipo de escopo for TEMPLATE, o texto de lote não é permitido.

  • Nome do esquema de escopo
    Quando o tipo de escopo for OBJECT, digite o nome do esquema no qual o objeto está contido.

  • Nome do objeto de escopo
    Quando o tipo de escopo for OBJECT, digite o nome do procedimento armazenado Transact-SQL, função escalar definida pelo usuário, função de valor de tabela de várias instruções ou gatilho DML no qual a instrução Transact-SQL aparece.

  • Parâmetros
    Digite o nome do parâmetro e os tipos de dados de todos os parâmetros embutidos 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 SQL Server envia internamente uma instrução depois de parametrizá-la. Para obter mais informações sobre a parametrização e guias de plano, consulte Como o SQL Server efetua a correspondência entre guias de plano e consultas.

    O nome do parâmetro e tipo de dados devem ser enviados exatamente no mesmo formato em que forem enviados a SQL Server usando-se sp_executesql ou enviados internamente após parametrização.

  • Dicas
    Digite as dicas de consulta ou 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. Por exemplo, a cláusula a seguir aplica as dicas MERGE JOIN e MAXDOP à instrução.

    OPTION (MERGE JOIN, MAXDOP 2)

    Para especificar um plano de consulta, digite a saída Plano de Execução XML para o plano. É possível obter o Plano de Execução XML para uma consulta examinando a exibição de gerenciamento dinâmico sys.dm_exec_query_stats. Por exemplo, a consulta a seguir retorna o plano de consulta para a instrução Transact-SQL, SELECT City, StateProvinceID, PostalCode FROM Person.Address ORDER BY PostalCode DESC.

    SELECT query_plan
    FROM sys.dm_exec_query_stats AS qs 
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
    CROSS APPLY sys.dm_exec_text_query_plan(qs.plan_handle, DEFAULT, DEFAULT) AS qp
    WHERE st.text LIKE N'SELECT City, StateProvinceID, PostalCode FROM Person.Address ORDER BY PostalCode DESC;%');