Un'opzione potrebbe essere l'utilizzo di un'istruzione INSERT INTO SELECT. Prendendo dalle suggestioni che utilizzano timestamp di tirare le ultime righe, si potrebbe fare qualcosa di simile ...
INSERT INTO t2 (
SELECT *
FROM t1
WHERE createdts > DATE_SUB(NOW(), INTERVAL 1 HOUR)
);
questo sarebbe prendere tutte le righe inserite nell'ora precedente e inserirli nella tabella 2. Si potrebbe avere uno script esegue questa query e la esegue ogni ora (o qualunque intervallo sia necessario).
Ciò semplificherebbe drasticamente lo script PHP per l'estrazione di righe poiché non è necessario eseguire iterazioni su alcuna riga. Si sbarazza anche di dover tenere traccia dell'ultimo ID di inserimento.
Anche la soluzione proposta da Fanis potrebbe sembrare interessante.
Come nota, la query di selezione nell'inserimento precedente può essere regolata per inserire solo determinati campi. Se avete solo bisogno alcuni campi, si avrebbe bisogno di specificarli nell'inserto in questo modo ...
INSERT INTO t2 (field1, field2) (
SELECT field1, field2
FROM t1
WHERE createdts > DATE_SUB(NOW(), INTERVAL 1 HOUR)
);
fonte
2010-09-20 02:29:44
IMO, se possibile, qualunque strato venga utilizzato per l'inserimento, ovvero i servizi che eseguono operazioni CRUD, devono "notificare" l'applicazione dopo un inserimento. In questo modo non stai costantemente votando. – Alex
@Alex: sono due diverse applicazioni indipendenti. La seconda applicazione legge solo dal database. – HyderA
Direi che il trigger di AFTER INSERT dovrebbe essere azzeccato, implementare a livello MySQL e lasciare che gli script eseguano il polling e puliscano le nuove voci nell'altra tabella. In questo modo, anche forzando un altro id (non autoincrementato) funzionerebbe ancora. – Wrikken