risparmio mySql fila posto di blocco a tavola?
Domanda
Sto avendo un problema wee, e sono sicuro che ci sia un / modo più conveniente per raggiungere il più semplice soluzione, ma tutte le ricerche sono gettare fino a spazi vuoti in questo momento!
Ho un db mysql che viene aggiornato regolarmente da pagina php [via un processo di cron] questo si aggiunge o elimina le voci a seconda dei casi.
Il mio problema è che ho anche bisogno di controllare se i dettagli [cioè il numero di telefono o simili] per l'ingresso sono cambiati, ma facendo questo a ogni chiamata non è possibile [non solo non è mi sembra essere eccessivo, ma mi sono limitato da un limite di 3a parte api chiamata] Inoltre non è questo informazioni critiche.
Così ho pensato che potrebbe essere meglio controllare un solo ingresso per chiamata pagina e scorrere le righe / entires con ogni chiamata pagina successiva.
Quale sarebbe il modo migliore di fare questo, cioè tenere traccia di quale voce / riga nella tabella che il prossimo dovrebbe essere controllato?
Ho 2 idee di come implementare questa:
1) L'ID della riga corrente potrebbe essere salvare in un file sul server [sicuramente non il modo migliore]
2) un campo booleano aggiuntivo [verifica] è aggiungere alla tabella, impostata su true sulla prima voce e falso a tutti gli altri. Poi su ogni pagina chiamarla; reperti 'dove controllare = TRUE' esegue il controllo di aggiornamento su questa riga, 'Assegno set = FALSE' 'Set [riga successiva] controllo = TRUE'
Si questo il modo migliore per fare questo, o qualcuno ha qualche sugestion meglio?
grazie in anticipo!
.k
PS dispiace per il titolo
Nessuna soluzione corretta
Altri suggerimenti
Non sono sicuro se questa è una buona soluzione, ma se devo fare ogni notte massicci aggiornamenti, scriverò gli aggiornamenti a una nuova tabella vuota, poi fare uno SQL selezionare per unire le tabelle e dimmi dove sono diversi , poi fare un altro aggiornamento di SQL come
UPDATE table, temptable
SET table.col1=temptable.col1, table.col2=temptable.col2 ......
WHERE table.id = temptable.id;
È possibile memorizzare il timestamp che una riga viene aggiornata in modo implicito utilizzando ON UPDATE CURRENT_TIMESTAMP [ http://dev.mysql.com/doc/refman/5.0/en/timestamp.html] o esplicitamente nel vostro aggiornamento di SQL. Poi tutto quello che dovete fare è selezionare la riga (s) con il timestamp più basso (utilizzando ORDER BY e LIMIT) e si ha la riga successiva da elaborare. Fino a quando ci si assicura che il timestamp viene aggiornato ogni volta.
es. Diciamo che utilizzato il TIMESTAMP campo last_polled_on per memorizzare il tempo chiamata l di fila. Il vostro inserto appare come:
INSERT INTO table (..., last_polled_on) VALUES (..., NOW());
Il tuo aggiornamento appare come:
UPDATE table SET ..., last_polled_on = NOW() WHERE ...;
E la tua selezione per la riga successiva il polling appare come segue:
SELECT ... FROM table ORDER BY last_polled_on LIMIT 1;