Saludos...
La base esta en firebird 2.1.2.18118.0.
estoy trabajando con EMSInterbase/firebird para administrar la base de datos.
Esta montada en un servidor linux
verifique en rdb$indices y el campo rdb$index_inactive esta en 0
el plan de la consulta da lo siguiente.
Código SQL
[-]SELECT A.DesActividad, P.SecPortafDet,
A.CodActividad, A.secActividad, J.*,
P.RS_Cat_Id, M.DesTipo_Manual
FROM TblPortafDet P
LEFT JOIN TblActividad A ON P.Cod_Actividad = A.secActividad
LEFT JOIN J_CONTRATACION_Items J ON P.Cod_Actividad = J.ci_datakey
AND P.RS_Cat_Id = J.ci_cat_id
LEFT JOIN TblTipo_Manual M ON A.SecTipo_Manual = M.SecTipo_Manual
WHERE P.SecPortafolio = 402 and A.desactividad is not NULL ORDER BY A.DesActividad
esta tabla JOIN J_CONTRATACION_Items tiene 3 campos en total.
Plan:
PLAN SORT (JOIN (JOIN (JOIN (P INDEX (IDX_TBLPORTAFDET1), A INDEX (PK_ACTIVIDAD)), J INDEX (J_CONTRATACION_DATAKEY_IDX, IDX_J_CONTRATACION_ITEMS)), M INDEX (PK_TIPO_MANUAL)))
Plan tomado:
PLAN SORT (JOIN (JOIN (JOIN (P INDEX (IDX_TBLPORTAFDET1), A INDEX (PK_ACTIVIDAD)), J INDEX (J_CONTRATACION_DATAKEY_IDX, IDX_J_CONTRATACION_ITEMS)), M INDEX (PK_TIPO_MANUAL)))
al ejecutar la consulta se verifica el estado de CPU del servidor y pasa del 100%
este es el estado de la base de datos
[root@homero2 bin]# ./gstat -h /part1/jerarquias.fdb
Database "/part1/jerarquias.fdb"
Database header page information:
Flags 0
Checksum 12345
Generation 116
Page size 8192
ODS version 11.1
Oldest transaction 77
Oldest active 78
Oldest snapshot 78
Next transaction 107
Bumped transaction 1
Sequence number 0
Next attachment ID 10
Implementation ID 19
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Jan 27, 2010 18:50:53
Attributes
Variable header data:
Sweep interval: 0
*END*
///**************
se corrieron los siguientes comandos.
/opt/firebird/bin/gbak -backup -v -ignore -garbage -limbo -user sysdba -password zitiz jerarquias.fdb jerarquia.gbk
y para el gfix
gfix -v -full basededatos.gdb
gfix -mend -full -ignore basededatos.gdb