Tengo una mesa muy grande con una clave principal de BINARY(20)
.Obtener el número de filas insertadas en ON DUPLICATE KEY UPDATE inserción múltiple?
La tabla tiene alrededor de 17 millones de filas. Cada hora, un trabajo cron intenta insertar hasta 50,000 nuevas entradas en esta tabla con la sintaxis ON_DUPLICATE_KEY_UPDATE
.
Cada inserción en el cronjob tiene 1.000 valores (inserción múltiple). ¿Cómo puedo obtener el número de filas insertadas en la tabla desde esta consulta? No puedo hacer un recuento de filas antes y después ya que hay alrededor de 17 millones de filas y la consulta es demasiado costosa.
En el mysql manual dice que para una fila inserta el número afectado de filas es 1
y para un campo actualizado es 2
, es decir, en mi 1000 INSERTAR EN DUPLICADO consulta UPDATE CLAVE pudiera tener filas afectadas van desde 1000 - 2000 pero no tengo manera de saber cuántos registros se insertaron desde este número?
¿Cómo puedo superar esto?
Gracias
Mi matemática no es la mejor, no puedo entender esto, voy a hacer algunas pruebas, gracias amigo. – Griff
De hecho, estás en lo correcto gracias amigo me salvó el día :) – Griff
Este asnwer asume que obtendremos 1 o 2 por cada fila. De los documentos de MySQL: Para INSERTAR ... EN instrucciones DUPLICATE KEY UPDATE, el valor de filas afectadas por fila es 1 si la fila se inserta como una nueva fila, 2 si se actualiza una fila existente y 0 si fila existente se establece en sus valores actuales Así que creo que si una fila existente se deja sin cambios, obtendremos 0 y esto no funcionará ...:/ – tomas