Ver Mensaje Individual
  #5 (permalink)  
Antiguo 12/10/2013, 13:30
Avatar de luisvasquez
luisvasquez
 
Fecha de Ingreso: diciembre-2003
Ubicación: Venezuela
Mensajes: 879
Antigüedad: 20 años, 5 meses
Puntos: 6
Respuesta: Insert ignore para optimizar?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Esta parte es la que me causa dudas:

¿Por qué razón se termina contando N veces (100.000)? Si esos dos valores son PK, entonces sólo debe ser necesario contar una única vez, una sola ejecución, y siendo PK, sería rapidísima.
¿De donde salen los otros 99.999 registros que verificas? ¿En qué se diferencian?

Respecto a usar INSERT IGNORE, si el registro ya existe, simplemente no lo inserta, sin warnings. Pero si no existe, lo inserta, y en ese caso la función NUM_ROWS() debe devolverte un numero positivo (1), ya que se modificó algo. En cambio, si no lo insertó, NUM_ROWS() devolverá cero (0).
Nota: NUM_ROWS() es una función de MySQL, no de PHP, pero PHP tiene su propia forma de obtener la misma información, luego de ejecutar la consulta en MySQL.
Eso lo tienes que ver en el Foro de PHP.
Gracias de nuevo amigo!.

Te comento, el arreglo tiene más de 100 mil registros por lo que, recorrerlo para verificar cada entrada implica 100 mil select count(*) where reg = 'elemento actual del arreglo'.

Debo verificar cada elemento del arreglo que viene de twitter para ver si ya lo cargué en la base de datos o no. Hago el insert SI Y SOLO SI no lo he cargado.

Por eso pensé ¿y si elimino ese select count e inserto sin preguntar?

Para eso tengo 2 opciones: Hacerlo con insert y manejar el error para evitar ejecutar la función o hacerlo con insert ignore