Saltar para o conteúdo principal
Versão: Próximo

DESCRIBE QUERY EXECUTION

DESCRIBE QUERY EXECUTION ( estado )

ParâmetroTipoDescrição
estadoBooleano🡒True=Ativar análises de pesquisas internas, False=Desativar o análises de pesquisas internas

Descrição

O comando DESCRIBE QUERY EXECUTION permite ativar ou desativar o modo de análise da execução de pesquisas para o processo atual. O comando funciona unicamente no contexto dos comandos de pesquisa da linguagem 4D tal como QUERY.

A chamada do comando com o parâmetro estado em True ativa o modo da análise de pesquisas. Neste modo, o motor de 4D registra internamente duas séries de informações específicas para cada pesquisa posterior efetuada sobre os dados:

  • Uma descrição interna detalhada da pesquisa justo antes de sua execução, em outras palavras, a pesquisa prévia (o plano de pesquisa),
  • Uma descrição interna detalhada da pesquisa que foi executada realmente (a rota de pesquisa). A informação registrada inclui o tipo de pesquisa (indexada, seqüencial), o número de registro encontrados e o tempo necessário para cada critério de pesquisa a executar. Pode ler esta informação utilizando os comandos Get last query plan e Get last query path.

Geralmente, a descrição do plano de uma pesquisa e sua rota são idênticos, mas poderiam eventualmente ser diferentes porque 4D poderia implementar otimizações dinâmicas durante a execução da pesquisa para melhorar o rendimento. Por exemplo, una pesquisa indexada pode ser convertida dinamicamente em uma pesquisa seqüencial se o motor 4D estima que seria mais rápida, este é o caso, quando o número de registros nos quais é realizada a pesquisa for baixo.

Passe False no parâmetro estado quando não necessite analisar as pesquisas. O modo de análise da execução das pesquisas pode tornar lenta a aplicação.

Exemplo

O seguinte exemplo ilustra o tipo de informação obtida utilizando estes comandos:

 var $vResultPlan;$vResultPath : Text
 DESCRIBE QUERY EXECUTION(True) //modo análise
 QUERY([Employees];[Employees]LastName="T@";*) // Pesquisa dos empregados cujo sobrenome começa por T...
 QUERY([Employees];&;[Companies]Name="H@";*) // que trabalham para uma empresa cujo nome começa por H
 QUERY([Employees];&;[Employees]Salary>2500;*) // cujo salário é > 2500
 QUERY([Employees];&;[Cities]Pop<50000) // que vivem em uma cidade com menos de 50000 habitantes
 $vResultPlan:=Get last query plan(Description in text format)
 $vResultPath:=Get last query path(Description in text format)
 DESCRIBE QUERY EXECUTION(False) //Fim do modelo de análise

Depois de executar este código, $vResultPlan e $vResultPath contém descrições das pesquisas realizadas, por exemplo:

$vResultPlan :    Employees.LastName == T@ And  Employees.Salary > 2500 And Join on Table : Companies  :   Employees.Company = Companies.Name [index : Companies.Name ] LIKE H@ And Join  on Table : Cities  :  Employees.City = Cities.Name [index : Cities.Pop  ] < 50000$vResultPath : (Employees.LastName == T@ And Employees.Salary  > 2500) And (Join on Table : Companies  :  Employees.Company  = Companies.Name with filter {[index : Companies.Name ]  LIKE H@}) And (Join on Table : Cities  :  Employees.City = Cities.Name  with filter {[index : Cities.Pop ] < 50000})   (3 registros encontrados em 1  minuto)

Se a constante Description in XML Format se passa ao comando Get last query path, $vResultPath contém a descrição da pesquisa expressada em XML:

$vResultPath : 
   <QueryExecution>
      <steps description="And" time="0" recordsfounds="1227">
         <steps description="[Merge] : ACTORS with CITIES" time="13" recordsfounds="1227">
            <steps description="[Join] : ACTORS.Birth_City_ID =CITIES.City_ID" time="13" recordsfounds="1227"/>
         </steps>
      </steps>
   </QueryExecution>

Ver também

Get last query path
Get last query plan