Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [PHP MYSQL] statistiche database

    Ciao a tutti.
    Sto preparando la pagina delle statistiche per il mio database che contiene 65000 records.
    l'ho fatto e funziona, ma risulta estremamente lento nell'apertura della pagina, in effetti le query sono molte da eseguire.
    Credo che il problema sia nella costruzione delle query, che faccio così:

    $pneumo=mysql_query("SELECT * FROM $table WHERE datacampione LIKE '__/06/2006' AND reparto LIKE 'RIABILITAZIONE PNEUMOLOG%' ");

    poi sulla pagina di visualizzazione metto il comando:

    echo "...".mysql_numrows($pneumo)."...";

    e sono molte query simili a questa!
    devo fare le statistiche per anno, mese, reparto, gruppo, esterno, interno, ecc.

    come già detto funziona il tutto, ma ho sentito che c'è un modo per contare i record più veloce, che impegna di meno il database:
    SELECT COUNT (*) FROM $table WHERE ....
    Non riesco a farlo funzionare, mi potete spiegare come implementare questo tipo di Query?
    è vero che è più veloce?

    Grazie in anticipo a chi mi risponderà
    Fare....o NON fare...non c'è tentare!
    YODA

  2. #2

  3. #3
    ho già provato una cosa del genere,
    aspetta, mi sembra di aver capito bene, devo fare così?

    $pneumo=mysql_query("SELECT COUNT (*) FROM $table WHERE datacampione LIKE '__/06/2006' AND reparto LIKE 'RIABILITAZIONE PNEUMOLOG%' ");

    echo $pneumo;

    credo di avere già provato ma mi dà errore, cosa sbaglio?
    è un sistema più veloce per contare i record, questo?

    Grazie
    Fare....o NON fare...non c'è tentare!
    YODA

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da Griffonsuper
    ho già provato una cosa del genere,

    $pneumo=mysql_query("SELECT COUNT (*) FROM $table WHERE datacampione LIKE '__/06/2006' AND reparto LIKE 'RIABILITAZIONE PNEUMOLOG%' ");
    ciao. la query mi sembra giusta anche se non mi convince quel data like. Hai per caso definito la data come campo di testo? Se sì non mi sembra una bella idea.

    Se invece la data è nel formato corretto, cioè aaaa-mm-gg

    puoi fare
    where left(campo_data,7) = "2006-06"

    quindi recuperi i record relativi a giugno 2006 a prescindere dal giorno.

  5. #5
    vedo che hai capito un problema del database, sì, la data è in formato testo, il database è molto vecchio e fino a poche settimane fa era gestito con DB3, non ti dico i disastri nell'importazione, comunque il fatto che sia in formato testo non è così terribile, per il momento lo lascio così.

    provo ad implementare quelle Query e vedo se mi da errore di nuovo,
    mi confermi che questo sistema è più veloce?

    grazie ancora
    Fare....o NON fare...non c'è tentare!
    YODA

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Inizia ad utilizzare i tipi appropriati per i campi visto che le date in un campo char sono una schifezza.
    Se non ricordo male qualche tempo fa ti avevo suggerito come convertire le date nel giusto formato. Impieghi due minuti a farlo e hai un campo congruo ai dati che deve contenere.

    Per la tua domanda circa la velocità di esecuzione sicuramente è più rapida una select count di una query che magari estrae tutti i campi di una tabella e della quale poi conti le righe con la funzione mysql_num_rows.

    Poi nel tuo caso specifico bisognerebbe vedere come hai strutturato il tutto, se utilizzi degli indici per sveltire le ricerche,ecc. I problemi certamente non sono dovuti a 65 mila record.

    Prova a leggerti questi articoli
    http://php.html.it/articoli/leggi/89...sql-con-php/1/
    http://php.html.it/articoli/leggi/92...le-pagine-web/
    http://database.html.it/guide/lezion...ttimizzazione/

    e vedi se trovi qualche suggerimento utile a ridurre i tuoi tempi.

    Nel caso dovessi avere ancora problemi prova a postare che tanti più esperti di me sulla progettazione di basi di dati sapranno consigliarti meglio.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.