- Home
- Categorie
- Coding e Sistemistica
- PHP
- Query su singola tabella
-
Query su singola tabella
Salve,
ho una tabella di circa 75000 record, formata da 5 tabelle uguali ma di giorni diversi, ecco un esempio
[TABLE="class: grid, width: 500"][TD]id[/TD]
[TD]idUtente[/TD]
[TD]idCitta[/TD]
[TD]pop[/TD]
[TD]data[/TD]
[TD]id_primary[/TD]
[/TR][TD]1[/TD]
[TD]125[/TD]
[TD]25[/TD]
[TD]33[/TD]
[TD]20121104[/TD]
[TD]1[/TD]
[/TR][TD]2[/TD]
[TD]200[/TD]
[TD]100[/TD]
[TD]123[/TD]
[TD]20121104[/TD]
[TD]2[/TD]
[/TR][TD]4[/TD]
[TD]125[/TD]
[TD]30[/TD]
[TD]158[/TD]
[TD]20121104[/TD]
[TD]3[/TD]
[/TR][TD]2[/TD]
[TD]200[/TD]
[TD]100[/TD]
[TD]125[/TD]
[TD]20121105[/TD]
[TD]4[/TD]
[/TR]
[/TABLE]dovrei estrapolare da questa tabella gli idUtente e la sum(pop) dei diversi giorni
ho fatto una cosa del genereSELECT t1.idUtente, sum(t1.pop) as POP1, sum(t2.pop) as POP2 FROM tabella as t1, tabella as t2 WHERE t1.idUtente = t2.idUtente AND t1.data = 20121104 AND t2.data = 20121105 GROUP BY t1.idUtente
ecco, la query funziona, ma ci mette dai 70 ai 90 secondi....
cosiderando che questa è solo la base della query, questo tempo è veramente eccessivo. qualche consiglio?
-
Ciao peppeocchi,
che indici hai attualmente sulle 2 tabelle?
-
ciao, ho come chiave primaria id_primary
in pratica accedo ad un file in remoto, ogni riga di questo file è una insert di un singolo record. questo file contiene circa 15000 righe, che eseguite come query mi popolano la tabella. questa è aggiornata ogni 24 ore con i cambiamenti delle ultime 24 ore. tengo uno storico di 5 giorni al massimo (quindi i 75000 record su cui faccio la ricerca)
ho una primary key in id_primary, tutti gli altri id presenti sono settati nel file remotoidUtente
idCitta
id (è diverso da idCittà in quanto corrisponde a delle coordinate di una mappa, quindi nel tempo sullo stesso id in cui prima c'era un idCittà, può esserci un diverso idCittà rispetto a quello precedente)
id_primary che sarebbe la chiave primaria (autoincrement)devo estrapolare tutti gli idUtente la cui pop (somma di pop di tutte le città che ha) del giorno 0 sia >= alla pop del giorno 1
-
Imposta idUtente e data come chiave, e le prestazioni dovrebbero migliorare.