Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    150

    [MySQL] Ottimizzazione: OR vs IN

    salve, forse è una domanda banale, ma mi è venuto questo dubbio.
    dal punto di vista dell'ottimizzazione, quando si hanno poche relazioni, è meglio costruire una select con l'operatore OR oppure IN?

    mi spiego:
    è meglio
    codice:
    SELECT * FROM my_table WHERE column = 'A' OR column = 'B'
    oppure

    codice:
    SELECT * FROM my_table WHERE column IN ('A', 'B')
    oppure è uguale e sono io che mi faccio troppi scrupoli?

  2. #2
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    la risposta "giusta", come sempre, non è banale, in quanto varia caso per caso.
    IN (con parametri fissi) usa un metodo "furbo", ossia ordina le chiavi al fine di usare una ricerca binaria, il che può essere meglio o peggio di operare con or successivi.
    In linea generale, generalissima (come detto se non misuri qualsiasi cosa dici è una sciocchezza), OR è più veloce per "piccoli" numeri di condizione, IN è meglio per "grandi" (grandi normalmente >30)
    Fino alla 4 c'erano problemi con IN "grandi", oggi non più

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    150
    ottimo, grazie mille!

    quindi per 3-4 valori mi conviene usare la or, giusto?

    solo una domanda, andando un attimo OT: qual è il limite "pratico" per gli elementi in una IN?

  5. #5
    non so quel sia il limite, ma se parli di centinaia, migliaia di elementi ti conviene orientarti verso una JOIN

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da tampe125
    ottimo, grazie mille!

    quindi per 3-4 valori mi conviene usare la or, giusto?

    solo una domanda, andando un attimo OT: qual è il limite "pratico" per gli elementi in una IN?
    sostanzialmente nessuno (nel caso di mysql aggiornati), o meglio nel limite del "pacchettone"

    ATTENZIONE: ci stiamo riferendo a IN di valori STATICI, NON di IN (select...).

    In quest'ultimo caso le prestazioni sono, generalmente, assai basse (spesso bassissismissimissimissimiisssime)

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    150
    si ottimo, io ho dei valori statici (1,2,3,4,...)
    poi dovrei trovare un modo per ottimizzare anche questa select, ma sarà il tema di un'altra discussione

    cmq grazie a tutti

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.