Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107

    [MySQL] Query lenta, soluzioni migliori?

    Salve a tutti, ho una query di questo tipo (tralascio alcuni elementi ininfluenti)

    codice:
    SELECT sum(aunn_prezzo) as cc
    FROM ATTESTATI
    INNER JOIN  TABELLA_NN on NN_corso=a_corso and NN_ele = a_partner /* genera i prezzi */
    INNER JOIN CONSULENTI on a_partner=idele
    GROUP BY.. ORDER BY.. limit 10
    La tabella ATTESTATI e TABELLA_NN (che relaziona i prezzi) sono di circa 200.000 righe.
    La query è troppo lenta, avete suggerimenti per migliorarla?
    (Spoiler: SI, ci sono gli indici)
    Guybrush Threepwood

  2. #2
    grazie per lo spoiler, in effetti è la prima cosa che viene in mente

    visto che 200k righe non dovrebbero far paura a nessun db, parliamo di che tipo di lentezza?

    e sempre a proposito di indici, gli elementi coinvolti nelle join son tutti numerici?

  3. #3
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Sisi, indici numerici e sono quelle delle join (chiaramente il problema è sulla riga 2)
    Concordo sui 200k+200k, non sono numeri particolari. la query, direttamente a db ci mette 170secondi (server buono, lo uso da 15 anni e non ha problemi).
    L'unico accento lo metto sulla doppia condizione nella JOIN magari


    Nel profile ho questi elementi molto lunghi
    Filling schema table (65secs)
    Sending data (11secs)
    Removing tmp table (17sec)
    Guybrush Threepwood

  4. #4
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Per prova, ho tolto la doppia condizione nella join, ma la lentezza resta
    Ultima modifica di Threepwood; 29-01-2024 a 14:45
    Guybrush Threepwood

  5. #5
    puoi mettere tutta la query? per capire se si può spezzare

    comunque 93 secondi so' tanti!

  6. #6

  7. #7
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,287
    Bisognerebbe vedere il piano di esecuzione (che però su MySQL non saprei leggere).

    Domanda, se fai la query senza groupby, order e sum è veloce?

  8. #8
    mmm punterei più sulla ORDER BY --- prova a toglierla come suggerisce URANIO

  9. #9
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Grazie a tutti per l'interessamento intanto.
    Semplifico la query, arrivando al cuore che da problemi, questa inner join

    codice:
    SELECT * 
    FROM au_cat_nn
    INNER JOIN au_attestati on a_partner=aunn_ele
    GROUP BY aunn_ele
    la tabella AU_CAT_NN ha 3 campi di raccordo
    1) Id del partner (diciamo del rivenditore)
    2) id del corso
    3) prezzo applicato al partner per quel corso

    per cui per ordinare per il partner che fattura di più conto il numero di attestati (ogni attestato avrà un prezzo diverso) unendolo a questa tabella.
    Guybrush Threepwood

  10. #10
    quale tabella ha l'elenco dei partner?

Tag per questa discussione

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.