+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

Migliorare la velocità della query

  1. #1
    ato
    ato non è in linea Novello
    Post
    20
    Like Inviati  
    0
    Like Ricevuti  
    0
    windows server 2012
    MySql server 5.7

    Buongiorno a tutti,
    volevo chiedervi, per cortesia, se il modo di come è scritta questa query..è il modo migliore, insomma più efficiente e che dia il risultato nel minor tempo possibile.

    Ho 2 tabelle :

    clienti
    movimenti

    devo ottenere l'elenco dei clienti (anche di quelli che non hanno fatto nessun movimento) con il numero dei movimenti ed il totale (euro) sia parziale che totale, cioè se un cliente ha fatto 10 movimenti per un totale di 1000 euro e supponiamo che nel filtraggio rientrino solo 3 dei movimenti per un totale parziale di 700 euro, la query deve darmi sia i risultati parziali 3 e 700 che i totali ovvero 10 e 1000

    questa è la query, e questa funziona ma volevo sapere, per cortesia, se è il modo più efficiente

    SELECT clienti.codice,
               clienti.nominativo,
    	   COUNT(movimenti.progressivo) AS numParz,
    	   SUM(ifnull(movimenti.importo,0)) AS totParz,
    	   IFNULL(vt.NumMovTot,0),
    	   IFNULL(vt.Totale,0)
    
    FROM clienti
    
    LEFT JOIN movimenti ON movimenti.CodiceCliente=clienti.Codice
    
    LEFT JOIN
    ( 
      SELECT movimenti.CodiceCliente AS codiceCliente,
      COUNT(movimenti.progressivo) AS numMovTot,
      SUM(movimenti.importo) AS Totale
      FROM movimenti
      GROUP BY movimenti.codiceCliente
    ) vt
    ON vt.CodiceCliente=clienti.Codice
    
    where codnizioni varie
    
    GROUP BY clienti.Codice
    
    qui potete scaricare il database azienda per poter fare eventuali prove

    https://www.dropbox.com/s/rlj92e9lvx...ienda.sql?dl=0

    questo è il risultato di explain della query

    https://www.dropbox.com/s/2bwo0qquae...query.png?dl=0

    confido nel vs aiuto oper ottimizzare al meglio la query
    Vi saluto
    Ultima modifica di AntonioG; 25-11-2019 09:32  Motivo: Tag CODE

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,505
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    35
    Perché in Pausa Caffè?

    Sposto in MySql
    ℹ️ Leggi di più su AntonioG ...

  3. #3
    ato
    ato non è in linea Novello
    Post
    20
    Like Inviati  
    0
    Like Ricevuti  
    0
    oops scusatemi. Non me ne ero accorto...è da tanto che non scrivevo in questo forum.
    Se non è un problema, per cortesia potresti provvedere tu a spostarlo,sempre che tu non lo abbia già fatto.
    Grazie e scusatemi ancora.

  4. #4
    ato
    ato non è in linea Novello
    Post
    20
    Like Inviati  
    0
    Like Ricevuti  
    0
    Novità?

  5. #5
    Ferrari_and non è in linea Scolaretto
    Post
    312
    Like Inviati  
    2
    Like Ricevuti  
    3
    La query in se è corretta. Dovendo fare un totale senza filtri e poi un totale con filtri mi sembra l'unica via.
    Per migliorare le perfomance va studiata la creazione di indici sulle tabelle oltre a quelli principali ma per fare ciò dovresti avere almeno una idea di che tipi di filtri si vanno ad analizzare altrimenti il rischio è creare strutture inutili.

  6. #6
    Dev-01 non è in linea Scribacchino
    Post
    540
    Like Inviati  
    2
    Like Ricevuti  
    0
    Puoi inoltre utilizzare un profiler (free) per ottenere informazioni più dettagliate sui passaggi operati e, infine ma non meno importante, tenere conto dell'architettura utilizzata (offline, online in rete locale, online, x86, x64).

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Migliorare la velocità della query
    Da ato nel forum Pausa caffè
    Risposte: 1
    Ultimo Post: 25-11-2019, 09:28
  2. Velocità e sicurezza di esecuzione delle query
    Da 7nuvole nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 19-01-2012, 09:22
  3. Report da query non rispetta l'ordinamento della query
    Da apusoft nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 02-09-2011, 13:34
  4. query - confronto di campi (della stessa query)
    Da Lindo nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 25-08-2010, 17:57
  5. qual’è la velocità della parallela ?
    Da stefano_ nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 08-10-2004, 19:45