come primo suggerimento .... dai qualche info in piu', posta la query quantomeno....
Ok giusto
Ho un area riservata e un DB mysql con varie tabelle.
La più importante "articoli" contiene gli articoli di magazzino.
La seconda tabella "agg_articoli" e' vuota c'e' solo la struttura.
Vengono sparati due file di aggiornamento dati uno per l'estate e uno per l'inverno, dal gestionale della azienda via ftp.
Poi l'utente del pannello di controllo va a fare determinate operazioni.
Ammettiamo di lavorare sull'estate (dato che ci siamo);
Il tracciato record e' lungo circa 2000 righe.....
E' un file.dat:
codice:
*;13042 ;4100 ;040;38:0000;40:0000;42:0000;44:0000;46:0000;48:0000;50:0000;52:0000;54:0000;56:0000;58:0000;60:0000;1
Adesso io ho impostato una logica cosi per aggiornare.
Dato che devo verificare tutte le volte che ho un aggiornamento se ci sono nuovi articoli, se ci sono articoli a zero, o se ci sono esistenze da modificare.
Premesso che un record principalmente è formato da "modello,tessuto,colore, ecc" e che posso avere più modelli fatti in tessuti diversi ed in colori diversi :
Es:
modello 301 tessuto 4000 colore 010
modello 301 tessuto 4000 colore 020
modello 301 tessuto 5000 colore 010
Per me sono 3 record diversi nel DB.
(puo' sembrare strano ma siccome poi a tali dati sono aggiunte immagini dei capi ed immagini dei tessuti, e i dati saranno presentati in flash, era meglio avere una struttura cosi)
Detto questo appunto parso il tracciato record, e vado a popolare la tabella agg_articoli.
Nessun problema con INSERT scorre benino, almeno offline.
Una volta fatto questo in un altra pagina php vado a fare l'aggiornamento dei record.
Spezzo l'aggiornamento in tre fasi :
inserimento dei record nuovi
cancellazione di quelli con esistenza zero(nel tracciato record finale avrò anche il totale per taglia, cosi questa parte sarà più veloce)
aggiornamento per quelli che avranno l'esistenza per taglia e colore cambiata.
Per inserire i nuovi record confronto la tabella per cosi dire temporanea agg_articoli con la tabella "buona" articoli.
Dato che devo confrontare 3 condizioni (modello,tessuto,colore) la mia query potrebbe essere questa :
codice:
$sql="SELECT * FROM agg_articoli, articoli WHERE agg_articoli.modello=articoli.modello AND agg_articoli.tessuto = articoli.tessuto AND agg_articoli.colore = articoli.colore";
Se per caso provassi a mettere un "ORDER BY" mi va in timeout in locale (30sec).
Curiosità: perche se invece di mettere "SELECT * FROM agg_articoli" mettessi "SELECT modello FROM agg_articoli" mi da questo errore "ambigus column modello".
Detto questo pensavo come detto sopra di spezzare questa query in pezzi da 50 operazioni l'una con un limit.
Spero di essermi spiegato bene, non era facile.