Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 26

Discussione: Join consiglio

Hybrid View

  1. #1
    usa le JOIN esplicite

    SELECT c.comune, p.provincia
    FROM Comuni C INNER JOIN Provincie P ON C.Id_Provincia=P.Id_Provincia
    WHERE P.Provincia='ROMA'

    o anche

    SELECT c.comune, p.provincia
    FROM Comuni C INNER JOIN Provincie P ON C.Id_Provincia=P.Id_Provincia AND P.Provincia='ROMA'

    con lo stesso metodo aggiungi le altre tabelle che ti servono

  2. #2
    chissà per quale motivo hanno inventato le JOIN se poi nel 2015 si va ancora di subselect

  3. #3
    Quote Originariamente inviata da optime Visualizza il messaggio
    chissà per quale motivo hanno inventato le JOIN se poi nel 2015 si va ancora di subselect
    Ti piace vincere facile
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    Quote Originariamente inviata da optime Visualizza il messaggio
    chissà per quale motivo hanno inventato le JOIN se poi nel 2015 si va ancora di subselect
    per il piacere delle cose semplici

    Ti piace vincere facile
    le join sono spesso più lente e quindi è difficile vincere ma ....

  5. #5
    Quote Originariamente inviata da marino51 Visualizza il messaggio
    per il piacere delle cose semplici
    parlerei di abitudine, non di semplicità. se sai usare le join le subselect diventano meno semplici
    Quote Originariamente inviata da marino51 Visualizza il messaggio
    le join sono spesso più lente e quindi è difficile vincere ma ....
    più lente? hai dei benchmark?

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    Quote Originariamente inviata da optime Visualizza il messaggio
    parlerei di abitudine, non di semplicità. se sai usare le join le subselect diventano meno semplici
    si, ma ti stai rivolgendo ad una persona che ha posto un quesito al forum e non tratta d'abitudine le join, al punto di scrivere 2 spanne di codice, quindi bando alla polemica, mi sono rivolto a lui non agli esperti del settore

    più lente? hai dei benchmark?
    si ne ho

    ed ancora, oltre la polemica, cento teste, cento idee diverse (traducendo un detto della mia nonna)

  7. #7
    Quote Originariamente inviata da marino51 Visualizza il messaggio
    si, ma ti stai rivolgendo ad una persona che ha posto un quesito al forum e non tratta d'abitudine le join, al punto di scrivere 2 spanne di codice, quindi bando alla polemica, mi sono rivolto a lui non agli esperti del settore
    e non è forse un'occasione per migliorarsi? ignorante (nel senso che ignori) sei e ignorante devi rimanere?

    Quote Originariamente inviata da marino51 Visualizza il messaggio
    si ne ho
    non si finisce mai di imparare (vedi sopra ) posti qualche link? grazie

    Quote Originariamente inviata da marino51 Visualizza il messaggio
    ed ancora, oltre la polemica, cento teste, cento idee diverse (traducendo un detto della mia nonna)
    è il bello del forum (quando è forum davvero, non quando è solo un help desk...)

  8. #8
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    Quote Originariamente inviata da optime Visualizza il messaggio
    più lente? hai dei benchmark?
    IO sì
    In questo caso si sta parlando specificamente di MySQL, che per molto tempo non ha avuto un materializzatore delle subquery dipendenti. In sostanza invece di creare una lista di chiavi (nella subquery) per poi eseguire il ciclo esterno (quindi complessità n * 1), eseguiva ogni volta la subquery, quindi complessità n*m (in realtà anche più perchè le chiave per iN in mysql vengono sortate)

    Bene questo è un problema noto e stranoto: le versioni più moderne (credo dalla 5.6 in poi), e mariadb, usano strategie più efficienti, tanto che oggi è difficile dire a priori quale sia meglio (IN o JOIN).

    Siccome, però, spesso gli host a basso costo usano versioni mysql non aggiornate (5.1 anche) il modo migliore è fare un explain della select per vedere cosa succede, o fare una rapida ricerca per vedere se la versione specifica gestisce in modo furbo questo tipo di interrogazioni.

    Il perchè ciò accada, ed accadesse, è relativo alla possibilità di avere interferenze "strane" durante l'esecuzione, uso di funzioni, stored, transazioni pendenti e abortite e così via.
    Per non sbagliare mysql vecchio... ricalcola ogni volta la subquery e buonanotte, è sicuro che i dati siano giusti

  9. #9
    Quote Originariamente inviata da MySQL Visualizza il messaggio
    IO sì
    In questo caso si sta parlando specificamente di MySQL, che per molto tempo non ha avuto un materializzatore delle subquery dipendenti. In sostanza invece di creare una lista di chiavi (nella subquery) per poi eseguire il ciclo esterno (quindi complessità n * 1), eseguiva ogni volta la subquery, quindi complessità n*m (in realtà anche più perchè le chiave per iN in mysql vengono sortate)

    Bene questo è un problema noto e stranoto: le versioni più moderne (credo dalla 5.6 in poi), e mariadb, usano strategie più efficienti, tanto che oggi è difficile dire a priori quale sia meglio (IN o JOIN).

    Siccome, però, spesso gli host a basso costo usano versioni mysql non aggiornate (5.1 anche) il modo migliore è fare un explain della select per vedere cosa succede, o fare una rapida ricerca per vedere se la versione specifica gestisce in modo furbo questo tipo di interrogazioni.

    Il perchè ciò accada, ed accadesse, è relativo alla possibilità di avere interferenze "strane" durante l'esecuzione, uso di funzioni, stored, transazioni pendenti e abortite e così via.
    Per non sbagliare mysql vecchio... ricalcola ogni volta la subquery e buonanotte, è sicuro che i dati siano giusti
    Grazie, e' bello ogni tanto leggere un post tecnico un "pochino" piu' approfondito della media

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    @optime, sembra che tu abbia capito, applicalo

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.