Ver Mensaje Individual
  #8  
Antiguo 16-07-2007
iuqrul iuqrul is offline
Miembro
 
Registrado: dic 2004
Ubicación: Cartagena
Posts: 36
Reputación: 0
iuqrul Va por buen camino
Los datos borrados no son todos los de una tabla, es un proceso de inicio de ejercicio de una base de datos, y siempre contiene datos que deben mantenerse, normalmente los del ejercicio n-1 más de los del n, borrando los anteriores a n-1, con lo que aproximadamente se borran algo menos de la mitad de los registros.

Tabla maestro:

CREATE TABLE TABLA_MAESTRO (
ID ID NOT NULL /* ID = INTEGER */,
NR NR NOT NULL /* NR = VARCHAR(15) NOT NULL */,
NPLAN NRPLAN /* NRPLAN = VARCHAR(32) */,
NTRANSACCION ID /* ID = INTEGER */,
ORIGEN ID /* ID = INTEGER */,
MEDIO ID /* ID = INTEGER */,
DESTINO ID /* ID = INTEGER */,
OBJETO ID /* ID = INTEGER */,
RESPONSABLE ID /* ID = INTEGER */,
COEFICIENTE COEFICIENTE /* COEFICIENTE = NUMERIC(14,4) DEFAULT 0 */,
FECHAINICIO FECHA /* FECHA = TIMESTAMP */,
FECHAINICIOPLANIFICADA FECHA /* FECHA = TIMESTAMP */,
FECHAFIN FECHA /* FECHA = TIMESTAMP */,
FECHAFINPLANIFICADA FECHA /* FECHA = TIMESTAMP */,
SUBFAMILIA ID NOT NULL /* ID = INTEGER */,
SUBFAMILIAMETODO ID /* ID = INTEGER */,
CONTENIDO ID /* ID = INTEGER */,
INIVAL FECHA /* FECHA = TIMESTAMP */,
FINVAL FECHA /* FECHA = TIMESTAMP */,
FECHAREGISTRO FECHA_NOW /* FECHA_NOW = TIMESTAMP DEFAULT 'NOW' */,
FECHAMODIFICACION FECHA_NOW /* FECHA_NOW = TIMESTAMP DEFAULT 'NOW' */,
FECHAENVIO FECHA /* FECHA = TIMESTAMP */,
RS RS /* RS = SMALLINT DEFAULT 0 */,
ORDEN ORDEN /* ORDEN = VARCHAR(15) */,
NUMDOCUMENTO1 PROPIEDAD /* PROPIEDAD = VARCHAR(50) */,
NUMDOCUMENTO2 PROPIEDAD /* PROPIEDAD = VARCHAR(50) */,
NUMDOCUMENTO3 PROPIEDAD /* PROPIEDAD = VARCHAR(50) */,
ESTADO ESTADO_LINEA /* ESTADO_LINEA = SMALLINT */
);




/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/

ALTER TABLE TABLA_MAESTRO ADD CONSTRAINT PK_TABLA_MAESTRO PRIMARY KEY (ID);


/******************************************************************************/
/**** Foreign Keys ****/
/******************************************************************************/

ALTER TABLE TABLA_MAESTRO ADD CONSTRAINT FK_TABLA_MAESTRO FOREIGN KEY (SUBFAMILIA) REFERENCES PLN_LISTAFAMILIA (ID) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE TABLA_MAESTRO ADD CONSTRAINT FK_TABLA_MAESTRO2 FOREIGN KEY (NTRANSACCION) REFERENCES SIE_JERARQUIA (ID) ON DELETE SET NULL ON UPDATE CASCADE;
ALTER TABLE TABLA_MAESTRO ADD CONSTRAINT FK_TABLA_MAESTRO3 FOREIGN KEY (RESPONSABLE) REFERENCES GRH_DEFINICION (ID);


/******************************************************************************/
/**** Indices ****/
/******************************************************************************/

CREATE UNIQUE INDEX TABLA_MAESTRO_IDX1 ON TABLA_MAESTRO (NR);
CREATE INDEX TABLA_MAESTRO_IDX10 ON TABLA_MAESTRO (SUBFAMILIAMETODO, ORDEN, ID);
CREATE INDEX TABLA_MAESTRO_IDX11 ON TABLA_MAESTRO (OBJETO);
CREATE INDEX TABLA_MAESTRO_IDX12 ON TABLA_MAESTRO (NUMDOCUMENTO1);
CREATE INDEX TABLA_MAESTRO_IDX13 ON TABLA_MAESTRO (NUMDOCUMENTO2);
CREATE INDEX TABLA_MAESTRO_IDX14 ON TABLA_MAESTRO (NUMDOCUMENTO3);
CREATE INDEX TABLA_MAESTRO_IDX15 ON TABLA_MAESTRO (SUBFAMILIA, SUBFAMILIAMETODO);
CREATE INDEX TABLA_MAESTRO_IDX2 ON TABLA_MAESTRO (FECHAMODIFICACION);
CREATE DESCENDING INDEX TABLA_MAESTRO_IDX3 ON TABLA_MAESTRO (NPLAN, FECHAINICIO);
CREATE DESCENDING INDEX TABLA_MAESTRO_IDX4 ON TABLA_MAESTRO (FECHAINICIO);
CREATE INDEX TABLA_MAESTRO_IDX5 ON TABLA_MAESTRO (FECHAFIN);
CREATE INDEX TABLA_MAESTRO_IDX6 ON TABLA_MAESTRO (ORIGEN);
CREATE INDEX TABLA_MAESTRO_IDX7 ON TABLA_MAESTRO (DESTINO);
CREATE INDEX TABLA_MAESTRO_IDX8 ON TABLA_MAESTRO (MEDIO);
CREATE INDEX TABLA_MAESTRO_IDX9 ON TABLA_MAESTRO (RESPONSABLE, SUBFAMILIA);


Tabla detalle:

CREATE TABLE TABLA_DETALLE (
ID ID NOT NULL /* ID = INTEGER */,
NRP NR NOT NULL /* NR = VARCHAR(15) NOT NULL */,
NR NR NOT NULL /* NR = VARCHAR(15) NOT NULL */,
TIPOPROPIEDAD ID NOT NULL /* ID = INTEGER */,
PROPIEDAD PROPIEDAD /* PROPIEDAD = VARCHAR(50) */,
INIVAL FECHA /* FECHA = TIMESTAMP */,
FINVAL FECHA /* FECHA = TIMESTAMP */,
FECHAREGISTRO FECHA_NOW /* FECHA_NOW = TIMESTAMP DEFAULT 'NOW' */,
FECHAMODIFICACION FECHA_NOW /* FECHA_NOW = TIMESTAMP DEFAULT 'NOW' */,
FECHAENVIO FECHA /* FECHA = TIMESTAMP */,
RS RS /* RS = SMALLINT DEFAULT 0 */
);




/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/

ALTER TABLE TABLA_DETALLE ADD CONSTRAINT PK_TABLA_DETALLE PRIMARY KEY (ID);


/******************************************************************************/
/**** Foreign Keys ****/
/******************************************************************************/

ALTER TABLE TABLA_DETALLE ADD CONSTRAINT FK_TABLA_DETALLE FOREIGN KEY (TIPOPROPIEDAD) REFERENCES PLN_TIPOPROPIEDAD (ID) ON DELETE SET NULL ON UPDATE CASCADE;


/******************************************************************************/
/**** Indices ****/
/******************************************************************************/

CREATE UNIQUE INDEX TABLA_DETALLE_IDX1 ON TABLA_DETALLE (NR, TIPOPROPIEDAD);
CREATE INDEX TABLA_DETALLE_IDX2 ON TABLA_DETALLE (FECHAMODIFICACION);
CREATE UNIQUE INDEX TABLA_DETALLE_IDX3 ON TABLA_DETALLE (NRP);
CREATE INDEX TABLA_DETALLE_IDX4 ON TABLA_DETALLE (NR, TIPOPROPIEDAD, PROPIEDAD);




En realidad el borrado de los registro de la tabla detalle, se produce por un trigger, pero como ya he dicho en los post anteriores, el tiempo de borrado es asumible, el problema es la copia de seguridad.


La tabla maestro contiene unos 900k de registros, de los cuales son borrados 400k, y la detalle unos 5M, de los que se borran algo más de 2.
Responder Con Cita