Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 29
  1. #11
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Il left join piglia dentro tutte le righe, con o senza tabella collegata, e quello potrebbe essere il problema
    (che versione di mysql usi?)

    Metti questo
    codice:
    explain
    Select
      dati_temporanea.ambito
    From
      dati_temporanea,dati
    where
    (dati_temporanea.id = dati.id_tbl_temporanea)
    AND
    (dati_temporanea.ambito = 68)
    AND
    (dati.ambito Is Null)
    Limit 10000  
    Il dati.ambito finale is null mi lascia un pochino perplesso a dir poco

  2. #12
    credo che stia cercando le righe nella dati_temp che già non esistono nella dati (da qui la ricerca del null nella tabella di destra della join)

  3. #13
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Se fosse così questo sarebbe il caso di un NOT IT (o NOT EXISTS), che richiede però mariadb tipicamente.
    Però l'intuizione è giusta, quindi chiedo

    "ma cosa vuoi ottenere di preciso"
    ?

  4. #14
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Forse scrivo una cavolata ma se tu facessi una tabella temporanea per la prima tabella per ottenere i soli record con dati_temporanea.ambito = 68 ed una seconda per la seconda tabella con dati.ambito Is Null
    E poi fare il left join sui dati filtrati ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #15
    Quote Originariamente inviata da optime Visualizza il messaggio
    credo che stia cercando le righe nella dati_temp che già non esistono nella dati (da qui la ricerca del null nella tabella di destra della join)
    è esattamente quello che voglio ottenere

  6. #16
    Quote Originariamente inviata da MySQL Visualizza il messaggio
    Il left join piglia dentro tutte le righe, con o senza tabella collegata, e quello potrebbe essere il problema
    (che versione di mysql usi?)

    Metti questo
    codice:
    explain
    Select
      dati_temporanea.ambito
    From
      dati_temporanea,dati
    where
    (dati_temporanea.id = dati.id_tbl_temporanea)
    AND
    (dati_temporanea.ambito = 68)
    AND
    (dati.ambito Is Null)
    Limit 10000  
    Il dati.ambito finale is null mi lascia un pochino perplesso a dir poco
    versione 5.0.51

  7. #17
    Quote Originariamente inviata da mansportivo Visualizza il messaggio
    versione 5.0.51
    ecco il nuovo explain

    id select_type table type possible_keys key key_len ref rows Extra
    1 SIMPLE dati ref id_tbl_temporanea_2,ambito,id_tbl_temporanea ambito 3 const 1 Using where
    1 SIMPLE dati_temporanea eq_ref PRIMARY,ambito PRIMARY 4 dati.id_tbl_temporanea 1 Using where

  8. #18
    Quote Originariamente inviata da optime Visualizza il messaggio
    prova a mettere tutti i criteri di ricerca nella JOIN
    cioè?

  9. #19
    Quote Originariamente inviata da MySQL Visualizza il messaggio
    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
    è così, devo proprio controllare se i dati sono presenti in entrambe le tabelle...

  10. #20
    Quote Originariamente inviata da mansportivo Visualizza il messaggio
    è esattamente quello che voglio ottenere
    credo che tu ti debba rassegnare alla lentezza; infatti la select leggerà tutti i dati dalle due tabelle, e solo poi cercherà quelli che non corrispondono.

    puoi provare a velocizzare così

    Select
    dati_temporanea
    .ambito
    From
    dati_temporanea Left Join
    dati On dati_temporanea
    .id =
    dati.id_tbl_temporanea

    AND
    dati_temporanea.ambito = 68

    WHERE

    dati.ambito Is Null
    Limit 10000

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 © 2026 vBulletin Solutions, Inc. All rights reserved.