Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/01/2015, 16:49
pips
 
Fecha de Ingreso: octubre-2011
Mensajes: 104
Antigüedad: 12 años, 6 meses
Puntos: 1
Duda optimizacion BD

Hola a todos!!!

Estoy desarrollando un proyecto, el cual, la base de datos se actualiza varias veces diariamente, y los datos provienen de diferentes catalogos, la estructura se compone de dos tablas previas (tabla1 y tabla2) que se llenan y se copian a tablafinal1 y tablafinal2, donde se almacena todos los catalogos, una vez introducidos tabla1 y tabla2 se TRUNCATE
el proceso es el siguiente:

de una url via:
Cita:
Editado: Código de programación no permitido en foros de Bases de Datos.
Leer las normas del foro, por favor.
obtengo un catalogo que inserto dos tablas previas (MyIsam), sin indices con :

Código MySQL:
Ver original
  1. INSERT DELAYED tabla1 * columnas, values
y
Código MySQL:
Ver original
  1. INSERT DELAYED tabla2 * columnas, values

Los datos se insertan sin problemas.

Posteriormente hago una limpieza de registros en tabla 1 y tabla 2 (registros sin precio, sin IVA etc...) con DELETE rn tabla1 y tabla2
Posteriormente hago, teniendo en cuenta que ambas tablas tienen una columna comun(productid), que los productid que no se encuentren en las dos tablas se eliminen con:

Código MySQL:
Ver original
  1. DELETE tabla1 productid NOT IN (SELECT productid FROM tabla2) y a la inversa
y finalmente hago un insert a las correspondites tablafina1 y tablafinal2.
tablafinal1(Innodb) con productid PK e indice único y dos indices en dos columnas y tablafinal2 (Innodb) con productid FK e idice único. Se insetan siin problemas, salvo cuando hay algun productid que se repita.
El problema que tengo es que hay catalogos con mas de 500.000 registros y los insert tardan mucho.
De qué manera puedo agilizar la inserción de registros, debo cambiar el proceso de inserción de registros? alguna recomendación? hay algun generador de id's para evitar indice único?me servirría para esta arquitectura uniqid de php?

Última edición por gnzsoloyo; 16/01/2015 a las 20:00 Razón: Mal etiquetado.