[firebase-br] Select muito demorado.
Reinaldo Cesar
diasmartins em gmail.com
Ter Jul 14 09:50:21 -03 2009
Olá amigos, tenho um Sistema que faz uma abertura de operação usando os
selects abaixo.
Após a migração da versão SS 1.5.4 do Firebird para a versão SS 2.0.5 do
Firebird a abertura de operação que demorava cerca de 4 minutos passou a ser
executada em 17 minutos.
Utilizo o componente DBX com a dll de conexão dbexpint.dll.
Poderia ser a instrução "IN" que quadruplicou o tempo de abertura do
processo ou pode ser algum outro fator??? Pois escutei uma vez que a partir
do 2.0 as instruções com IN passaram a ser não INDEXADAS.
Obrigado
Reinaldo
SELECT
EOP.OPECOD,
((EOP.EOPQTDSALANT +
(EOP.EOPQTDENTCON + EOP.EOPQTDENTNCO + EOP.EOPQTDENTAGE +
EOP.EOPQTDENTCNF + EOP.EOPQTDENTSAC + EOP.EOPQTDENTRPF) +
EOP.EOPQTDENTTRF - EOP.EOPQTDSAITRF) -
(EOP.EOPQTDSAICON + EOP.EOPQTDPRDNCO + EOP.EOPQTDPRDAGE
+EOP.EOPQTDSAICNF)) AS QTD_OPER,
((EOP.EOPVALSALANT +
(EOP.EOPVALENTCON + EOP.EOPVALENTNCO + EOP.EOPVALENTAGE +
EOP.EOPVALENTCNF + EOP.EOPVALENTSAC + EOP.EOPVALENTRPF) +
EOP.EOPVALENTTRF - EOP.EOPVALSAITRF) -
(EOP.EOPVALSAICONREA + EOP.EOPVALPRDNCO + EOP.EOPVALPRDAGE +
EOP.EOPVALSAICNF)) AS VAL_OPER
FROM
ESTATISTICA_OPERADORES EOP
WHERE
EOP.EOPTIP = :TIPOPE AND -- Existem 5 tipos de operação
EOP.EOPDAT = (SELECT MAX(E.EOPDAT) FROM ESTATISTICA_OPERADORES E
WHERE E.OPECOD = EOP.OPECOD AND E.EOPSTA = 'E')
--======================
Plano de execução
PLAN (E ORDER IDX_EOPDAT_OPECOD_DESC INDEX (FK_OPE_EOP_OPECOD))
PLAN (EOP NATURAL)
Adapted Plan
PLAN (E ORDER IDX_EOPDAT_OPECOD_DESC INDEX (FK_OPE_EOP_OPECOD)) PLAN (EOP
NATURAL)
--======================
---------------------------------------------------------------------------------------------------------------------------------
SELECT
*
FROM
VW_RECIBOS_MENSAGEIROS REC
WHERE
(REC.MENCOD <> 0) AND
(REC.MENCOD IS NOT NULL) AND
(REC.RECSTA <> 'CI') AND
(
(REC.RECSTA IN ('BX','CA') AND (REC.RECLOCCAN <> 'C' OR REC.RECLOCCAN IS
NULL) AND REC.RECDATBAICAN = :DATA)
OR
(REC.RECSTA IN ('CD','DK','OC') AND REC.RECDATULTMOV = :DATA)
OR
(REC.RECSTA = 'CK' AND REC.RECSTAANT = 'OC' AND REC.RECDATULTMOVANT =
:DATA)
OR (REC.RECSTA = 'MR'
AND
(REC.RECULTENTDIA <= :DATA OR REC.RECULTACUDIA <= :DATA))
)
ORDER BY
REC.MENCOD
--======================
Plano de execução
PLAN SORT ((REC RE1 NATURAL)
PLAN (REC RE2 NATURAL))
Adapted Plan
PLAN SORT ((REC RE1 NATURAL) PLAN (REC RE2 NATURAL))
--======================
Mais detalhes sobre a lista de discussão lista