Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Moderatore di Motori di ricerca e webmarketing L'avatar di rigby76
    Registrato dal
    Oct 2005
    residenza
    Firenze
    Messaggi
    4,913

    Ottimizzazione query: using where

    Ho una query che deve estrarre da una tabella di utenti quelli che sono attivi, ovvero che hanno il campo ultima operazione effettuata (un datetime) abbastanza vicino all'ora attuale; in più deve avere un'ulteriore condizione su un campo che contiene il livello dell'utente (un intero).

    La query è più o meno questa:
    codice:
    SELECT id FROM utente WHERE NOW() - `ultimaoperazione` < 1200 AND id_livello>=2
    Supponendo che il numero di utenti sia relativamente alto, che tecniche si possono usare per ottimizzare la velocità di esecuzione? Io ho provato a inserire un indice che contenesse entrambi i campi presenti nella query, vale a dire ultimaoperazione e id_livello; facendo il describe sembra che l'indice venga usato (prima aveo un indice solo su id_livello) ma i tempi di esecuzione rimangono sostanzialmente gli stessi.

    Idee? :master:
    estremizzo, banalizzo e polemizzo!

    Hai letto le FAQ sui Motori di Ricerca?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    Non ho capito bene la domanda comunque mysql sulle select normali e' praticamente istantaneo.

    Non so quanti utenti tu abbia ma io ho un database con 1,4 milioni di record e faccio delle select con varie join e vari filtri e i tempi di risposta sono sotto il decimo di secondo.

    A questo punto
    o hai un database verametne immenso
    o il db gira su una macchina vecchia di 10 anni
    o hai le tabelle fatte male (ad esempio non hai indicizzato le colonne dove effettui i filtri)
    o il tempo di esecuzione lento non e' dovuto alla query ma al resto dello script.


    Comunque per capire il tempo di esecuzione della query puoi usare phpmyadmin ed eseguirla manualmente ti dice quanti secondi ci mette.
    Se vedi che è istantanea allora e' un problema dello script.


    Andrea

  3. #3
    Moderatore di Motori di ricerca e webmarketing L'avatar di rigby76
    Registrato dal
    Oct 2005
    residenza
    Firenze
    Messaggi
    4,913
    Ti ringrazio per la risposta.

    In realtà non si tratta di tabelle particolarmente grandi, né di tempi alti in assoluto: l'esecuzione da phpmyadmin è istantanea in effetti.

    Il punto è la query gira su un sistema forse un po' vecchio e sicuramente sovraccarico, ed è una di quelle usate più frequentemente. Per questo volevo capire se esiste un modo per ottimizzarla al massimo, oppure se avere un indice su quelle due colonne interessate dalla where sia tutto quel che si può fare.
    estremizzo, banalizzo e polemizzo!

    Hai letto le FAQ sui Motori di Ricerca?

  4. #4
    Non credo che sia chissà quanto ottimizzabile quella query.
    E' molto breve... forse puoi guadagnare qualcosa giocando sui confronti (ma si parla di qualche istruzione... niente di significativo).

    Un indice aiuterebbe sì, ma di più credo non si possa fare.... (parlo da 'gnurante')

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.