Buenas tardes amigos de FDW una vez mas estoy aqui requiriendo de su ayuda sobre una situacion anormal que me esta pasando al tratar de eliminar registros de una tabla.
pasa lo siguiente tengo esta tabla:
Código:
-- Table: inventario.tmovimiento_inv
-- DROP TABLE inventario.tmovimiento_inv;
CREATE TABLE inventario.tmovimiento_inv
(
nid_inventario numeric NOT NULL DEFAULT nextval('inventario.sec_inventario'::regclass),
nmovimiento numeric NOT NULL,
nfecha date,
nid_tipo_operacion numeric NOT NULL,
ndocumento numeric,
nfecha_doc date,
cobservacion character varying(255),
nid_clientes numeric,
nguia numeric,
nid_dias numeric NOT NULL,
nid_sucursal numeric NOT NULL,
nano smallint,
CONSTRAINT tmovimiento_inv_pkey PRIMARY KEY (nid_inventario),
CONSTRAINT fk_client FOREIGN KEY (nid_clientes)
REFERENCES ventas.tclientes (nid_clientes) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT fk_dias FOREIGN KEY (nid_dias)
REFERENCES general.tdias (nid_dias) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT fk_inventario_sucursal FOREIGN KEY (nid_sucursal)
REFERENCES general.tsucursales (nid_sucursal) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT fk_tipo_operacion FOREIGN KEY (nid_tipo_operacion)
REFERENCES inventario.ttipo_operacion (nid_tipo_operacion) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
ALTER TABLE inventario.tmovimiento_inv OWNER TO iancarina;
-- Trigger: tg_inventario_tmovimiento_inv on inventario.tmovimiento_inv
-- DROP TRIGGER tg_inventario_tmovimiento_inv ON inventario.tmovimiento_inv;
CREATE TRIGGER tg_inventario_tmovimiento_inv
AFTER DELETE
ON inventario.tmovimiento_inv
FOR EACH STATEMENT
EXECUTE PROCEDURE inventario.fn_establecer_secuencia_movimiento_inv();
y esta:
Código:
-- Table: inventario.tdetalle_movimiento_inv
-- DROP TABLE inventario.tdetalle_movimiento_inv;
CREATE TABLE inventario.tdetalle_movimiento_inv
(
nid_inventario numeric NOT NULL,
cid_productos character varying(20) NOT NULL,
ncantidad numeric NOT NULL,
nid_planta numeric NOT NULL,
nid_sucursal numeric NOT NULL,
nid_detalle_inventario numeric NOT NULL DEFAULT nextval('inventario.sec_detalle_inventario'::regclass),
CONSTRAINT fk_inventario FOREIGN KEY (nid_inventario)
REFERENCES inventario.tmovimiento_inv (nid_inventario) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT fk_inventario_sucursal FOREIGN KEY (nid_sucursal)
REFERENCES general.tsucursales (nid_sucursal) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT fk_planta FOREIGN KEY (nid_planta)
REFERENCES inventario.tplanta (nid_planta) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE NO ACTION,
CONSTRAINT fk_productos FOREIGN KEY (cid_productos)
REFERENCES general.tproductos (cid_productos) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
ALTER TABLE inventario.tdetalle_movimiento_inv OWNER TO iancarina;
-- Trigger: tg_establecer_secuencia_detalle_movimiento_inv on inventario.tdetalle_movimiento_inv
-- DROP TRIGGER tg_establecer_secuencia_detalle_movimiento_inv ON inventario.tdetalle_movimiento_inv;
CREATE TRIGGER tg_establecer_secuencia_detalle_movimiento_inv
AFTER DELETE
ON inventario.tdetalle_movimiento_inv
FOR EACH STATEMENT
EXECUTE PROCEDURE inventario.fn_establecer_secuencia_detalle_movimiento_inv();
-- Trigger: tg_validar_idinventario on inventario.tdetalle_movimiento_inv
-- DROP TRIGGER tg_validar_idinventario ON inventario.tdetalle_movimiento_inv;
CREATE TRIGGER tg_validar_idinventario
BEFORE INSERT
ON inventario.tdetalle_movimiento_inv
FOR EACH ROW
EXECUTE PROCEDURE inventario.validar_idinventario();
estoy ejecutando la siguiente instruccion
Delete from inventario.tmovimiento_inv where nano = 2010
pero el proceso de ejecucion tardo excesivamente hasta la ultima ejecucion llevaba mas de 3 horas. (A eso me refiero con situacion anormal)
pero si ejecuto esta instruccion
Delete from inventario.tdetalle_movimiento_inv where nid_inventario between 55496 and 95678
no llega a los 2 segundos.
Nota: la tabla tmovimiento_inv en ese año posee 44759 registros. y la tabla tdetalle_movimiento_inv en ese año posee 414593 registros.
No se que debo hacer para solucionar este problema. espero alguien me pueda ayudar.