Title:
Marcos,
Valeu pela dica, n�o solucionou o problema, mas percebi que o plano de execu��o do select melhorou.
Resolvi ir a campo para averigua��o do problema (havia solicitado que o usu�rio fizesse o teste no Query Analyser) - na verdade os 4min s�o relamente uns 1min30seg aproximadamente (exagero do usu�rio).
Ap�s diversas tentativas - recriar �ndices, reinstalar o ODBC, reescrever o c�digo - resolvi fazer uma aplica��o somente com a query em quest�o. Da� a surpresa - rodou como no Query Analyser. Diferen�a entre c�digo ? Apenas a vari�vel sMatrLogin, substitu�da por um valor real ('913', no caso). Resolvi, ent�o, substituir a vari�vel da query por uma concatena��o
( = '" || sMatrLogin || "' ...). Feita essa altera��o a query foi executada com a mesma velocidade do Query Analyser.
Vc ou algu�m da lista saberia me informar o porqu� dessa particularidade ?
 
 
D�lio Mendes Soares
Analista de Sistemas
0 xx 61- 912-3175
[EMAIL PROTECTED]
-----Mensagem Original-----
Enviada em: Ter�a-feira, 15 de Fevereiro de 2000 16:50
Assunto: RES: [sqlwin] Query CTD x SQL SERVER

    Caro Dulio
 
        Tente abrir um parenteses ap�s o segundo AND e fecha-lo no final dele (como alterado em sua mensagem).
       
 
 Marcos Carvalho de Campos

[EMAIL PROTECTED]

-----Mensagem original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]Em nome de Dulio
Enviada em: Ter�a-feira, 15 de Fevereiro de 2000 11:40
Para: [EMAIL PROTECTED]
Assunto: [sqlwin] Query CTD x SQL SERVER

Estou com um problema na recupera��o de dados numa query executada a partir de uma aplica��o em Centura.  A query abaixo roda no Query Analyser (sql 7.0) em menos de 3 segundos e leva aproximadamente uns 4 minutos na aplica��o.
 
Alguem que trabalha com CTD e SQLSERVER poderia indicar-me algo a esse respeito ?
J� separei SqlPrepare e SqlExecute, mas em v�o.
Detalhe, o problema come�ou qdo substitu�mos o SQLSERVER Beta pela Original.
 
If NOT SqlPrepareAndExecute( hSql,
  "SELECT distinct OS.nr_os, FASE.dt_hr_entrada_fase
    FROM TB_ORDEM_SERVICO OS, TB_FASE_OS FASE, TB_MECANICO_MAQUINA MEC
    WHERE FASE.nr_os = OS.nr_os
           AND  (FASE.cd_tipo_fase = '040' OR FASE.cd_tipo_fase = '060' OR FASE.cd_tipo_fase = '010' )
           AND  ( FASE.dt_hr_entrada_fase = (select max(dt_hr_entrada_fase) from TB_FASE_OS FASE1
                                                                        where FASE1.nr_os = OS.nr_os
                                                                             AND fase.cd_tipo_fase = fase1.cd_tipo_fase
                                                                             AND fase1.dt_hr_saida_fase is NULL ) 
           AND ( OS.cd_tecnico = :sMatrLogin
                      OR ( MEC.cd_funcionario = :sMatrLogin AND MEC.cd_item = OS.cd_item
                                AND OS.cd_tecnico is Null ) )
    ORDER BY OS.nr_os, FASE.dt_hr_entrada_fase
    INTO :nNrOS, :dDtFase")
 
Obrigado,
 
D�lio Mendes Soares
Analista de Sistemas
0 xx 61- 912-3175
[EMAIL PROTECTED]

Responder a