Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/02/2010, 04:40
Alextroy
 
Fecha de Ingreso: marzo-2005
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 0
Borrado masivo

Hola.

Tengo un pequeño problema, que mas bien es una pequeña indecisión.
Necesito hacer un borrado masivo de datos en una tabla usando las referencias de otra tabla. Como se que esto solo lo he entendido yo, voy a explicarmen mejor:

Mas o menos estas son las tablas

TABLA1
----------
ID number
ID_TABLA2 number


TABLA2
-------------
ID number
FECHA date

index(id)


Y el borrado que necesito hacer, en bruto seria algo como:

DELETE FROM TABLA1 WHERE ID IN
(SELECT ID FROM TABLA2 WHERE FECHA='1/01/2010');

Obviamente esta no me vale porque son millones de registros a borrar.
He buscado muchas formas diferentes de hacerlo, algunos scripts que he encontrado para mi son incomprensibles

El último que he visto es usando el paquete DBMS_REDEFINITION. Pero tras darle muchas vueltas aún no se seguro si podria valerme o no.
Donde mas dudo es a la hora de crear la tabla con CTAS. No se si crearla vacia y luego hacer el insert de los datos con el /*+append*/, nologging y demás. O crearla con todos los datos pero excluyendo los que quiero borrar.

El principal problema que tengo, es que mi entorno de pruebas es como 100 veces mas pequeño que el entorno de producción, por eso no me sirve de mucho probar aqui.

¿teneis alguna sugerencia ya sea de el método que comento o de algun otro?

Gracias y un saludo