Una opción podría ser utilizar una instrucción INSERT INTO SELECT. Tomando de las sugerencias utilizando las marcas de tiempo para tirar de las últimas filas, se podía hacer algo así ...
INSERT INTO t2 (
SELECT *
FROM t1
WHERE createdts > DATE_SUB(NOW(), INTERVAL 1 HOUR)
);
esto tomaría todas las filas insertadas en la hora anterior e insertarlos en la tabla 2. Usted podría tener un script ejecuta esta consulta y la ejecuta cada hora (o el intervalo que necesite).
Esto simplificará drásticamente su script PHP para tirar filas ya que no necesita iterar sobre ninguna fila. También se deshace de tener que realizar un seguimiento de la última identificación de inserción.
La solución propuesta por Fanis también parece que podría ser interesante también.
Como nota, la consulta de selección en la inserción anterior solo puede ajustarse para insertar ciertos campos. Si sólo necesita ciertos campos, lo que tendría que especificarlos en el inserto así ...
INSERT INTO t2 (field1, field2) (
SELECT field1, field2
FROM t1
WHERE createdts > DATE_SUB(NOW(), INTERVAL 1 HOUR)
);
IMO, si es posible, cualquier capa que use para insertar, es decir, los servicios que envuelven operaciones CRUD, debe 'notificar' su aplicación después de una inserción. De esta manera no estás constantemente sondeando. – Alex
@Alex: son dos aplicaciones independientes diferentes. La segunda aplicación solo lee desde la base de datos. – HyderA
Diría que el disparador DESPUÉS DE INSERTAR sería perfecto, impleméntelo en el nivel MySQL y deje que los scripts sondeen y limpien las nuevas entradas en la otra tabla. De esa forma, incluso forzar otra identificación (no autoincrement) aún funcionaría. – Wrikken