Visualizzazione dei risultati da 1 a 10 su 26

Discussione: Join consiglio

Hybrid View

  1. #1
    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

  2. #2
    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

  3. #3
    Quote Originariamente inviata da k.b Visualizza il messaggio
    Grazie, e' bello ogni tanto leggere un post tecnico un "pochino" piu' approfondito della media
    A prescindere dalla qualità del post ,vorrei capire quale query utilizzare per estrarre quello di cui ho bisogno

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.