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

Chiarimento dell'ordine di unione per la creazione di tabelle temporanee

  1. Si riferisce all'ordine in cui l'ottimizzatore li valuta (join queue). L'ottimizzatore potrebbe non essere nemmeno a conoscenza dell'ordine delle tabelle nella tua istruzione sql.

  2. No, non contraddice quanto scritto al punto 3, poiché la answer scrive esplicitamente (l'enfasi è mia):

Il risultato e la performance sono due cose diverse. In realtà, c'è un commento votato alla risposta che lo dice

  1. Puoi indicare all'ottimizzatore quale tabella elaborare per prima utilizzando straight_join :

Tuttavia, devi stare attento con questo perché leghi la mano dell'ottimizzatore. Vedi questo SO argomento sulla discussione di vantaggi e svantaggi di straight_join.

Numero di record, dove criteri, indici:tutti svolgono la loro parte nella decisione dell'ottimizzatore dell'ordine di elaborazione delle tabelle. Non esiste una bacchetta magica, devi giocare un po' e probabilmente puoi ingannare l'ottimizzatore per cambiare l'ordine dei tavoli.