Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1

    mysql - query lentissima

    buongiorno a tutti, ho questa sql:

    Codice PHP:
    Select
      dati_temporanea
    .ambito
    From
      dati_temporanea Left Join
      dati On dati_temporanea
    .id =
        
    dati.id_tbl_temporanea
     WHERE dati_temporanea
    .ambito 68 And
      
    dati.ambito Is Null
    Limit 10000 

    le due tabelle hanno rispettivamente 7 milioni e 5 milioni di record, ed i campi coinvolti nella sql sono tutti indicizzati

    beh... non riesco ad ottenere il risultato se non dopo minuti....

    il server è abbastanza potente e comunque già testato con sql più impegnative

    ho già riparato entrambe le tabelle ma nulla da fare

    avete idea di come possa velocizzare il tutto?

    grazie anticipatamente per le eventuali risposte

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    se ti è possibile prova a riscriverla in una forma senza join, potrebbe essere più veloce

  3. #3
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Fai l'explain

  4. #4
    Quote Originariamente inviata da MySQL Visualizza il messaggio
    Fai l'explain
    id select_type table type possible_keys key key_len ref rows Extra
    1 SIMPLE dati_temporanea ref ambito ambito 3 const 4340610 Using where
    1 SIMPLE dati ref id_tbl_temporanea_2,id_tbl_temporanea id_tbl_temporanea 5 gestione_mr.dati_temporanea.id 1 Using where


    eccolo... mi pare che non ci sia nulla di anomalo a mio modesto parere... (modestissimo direi)

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    ciao,

    scusa se domanda banale:

    dati_temporanea.id
    dati.id_tbl_temporanea


    sono integer?


    dati.id_tbl_temporanea è primary key?

  6. #6
    Quote Originariamente inviata da 123delphi321 Visualizza il messaggio
    ciao,

    scusa se domanda banale:

    dati_temporanea.id
    dati.id_tbl_temporanea


    sono integer?


    dati.id_tbl_temporanea è primary key?
    si sono integer

    dati.id_tbl_temporanea è unique

  7. #7
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    è la prima riga che ti frega, fa un full scan.
    Inizia a togliere la condizione WHERE e metti l'explain solo del join

  8. #8
    Quote Originariamente inviata da MySQL Visualizza il messaggio
    è la prima riga che ti frega, fa un full scan.
    Inizia a togliere la condizione WHERE e metti l'explain solo del join
    id select_type table type possible_keys key key_len ref rows Extra
    1 SIMPLE dati_temporanea ALL 5806429
    1 SIMPLE dati ref id_tbl_temporanea_2,id_tbl_temporanea id_tbl_temporanea 5 gestione_mr.dati_temporanea.id 1 Using where


    eccolo

  9. #9
    prova a mettere tutti i criteri di ricerca nella JOIN

  10. #10
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Scusa, ma gli indici sulla where hanno selettività?
    Oppure per ogni riga di dati_temporanea esiste una riga di tbl_temporanea?
    Perchè in questo caso, ovviamente, stai facendo una selezione troppo ampia e che quindi non potrà che essere lenta qualsiasi metodo utilizzerai

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.