Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/10/2013, 12:54
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Insert ignore para optimizar?

Esta parte es la que me causa dudas:
Cita:
El asunto es que está tardando mucho tiempo en ejecutar y no se me ocurre nada para optimizar. Me parece que el select count() repetido 100 mil veces es lo que está causando el problema.
¿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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)