• User

    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 genere

    SELECT 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?


  • ModSenior

    Ciao peppeocchi,
    che indici hai attualmente sulle 2 tabelle?


  • User

    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 remoto

    idUtente
    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


  • ModSenior

    Imposta idUtente e data come chiave, e le prestazioni dovrebbero migliorare.