Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL SPIEGAZIONE:Utilizzo dell'indice e utilizzo della condizione dell'indice

Un esempio lo spiega meglio:

SELECT Year, Make --- possibly more fields and/or from extra tables
FROM myUsedCarInventory
WHERE Make = 'Toyota' AND Year > '2006'

Assuming the Available indexes are:
  CarId
  VIN
  Make
  Make and Year

Questa query si spiegherebbe con "Uso dell'indice" perché non è necessario, per niente , per "colpire" la stessa tabella myUsedCarInventory poiché l'indice "Make and Year" "copre" la sua necessità per quanto riguarda gli elementi della clausola WHERE che riguardano quella tabella .

Ora, immagina, manteniamo la query la stessa, ma per l'aggiunta di una condizione sul colore

...
WHERE Make = 'Toyota' AND Year > '2006' AND Color = 'Red'

Questa query si spiegherebbe probabilmente con "Uso della condizione dell'indice" (il "probabile", qui è nel caso in cui Toyota + anno non sarebbe stimato sufficientemente selettivo e l'ottimizzatore potrebbe decidere di scansionare semplicemente la tabella). Ciò significherebbe che MySQL sarebbe PRIMO usa l'indice per risolvere Make + Year e dovrebbe cercare anche la riga corrispondente nella tabella, solo per le righe che soddisfano le condizioni Make + Year. Questo è ciò che a volte viene indicato come "ottimizzazione push down ".