Questo eval si basano esclusivamente sulla clausola in cui si mostra ... può cambiare a seconda della colonna selezionare
MySQL utilizza indici per queste operazioni:
Per trovare rapidamente le righe corrispondenti a una clausola WHERE.
Per eliminare righe dalla considerazione. Se esiste una scelta tra gli indici multipli , MySQL normalmente utilizza l'indice che trova il numero più piccolo di righe (l'indice più selettivo). Se la tabella ha un indice a colonne multiple, è possibile utilizzare il prefisso più a sinistra dell'indice dall'ottimizzatore per cercare le righe. Ad esempio, se hai un indice di tre colonne su (col1, col2, col3), hai indicizzato le funzioni di ricerca su (col1), (col1, col2) e (col1, col2, col3). Per ulteriori informazioni su , vedere Sezione 9.3.5, "Indicatori a più colonne".
Per recuperare righe da altre tabelle durante l'esecuzione di join. MySQL può utilizzare gli indici su colonne in modo più efficiente se sono dichiarati come lo stesso tipo e dimensione. In questo contesto, VARCHAR e CHAR sono considerati uguali se dichiarati della stessa dimensione. Ad esempio, VARCHAR (10) e CHAR (10) hanno la stessa dimensione, ma VARCHAR (10) e CHAR (15) non lo sono.
Per il confronto tra colonne di stringhe non binarie, entrambe le colonne devono utilizzare lo stesso set di caratteri per . Ad esempio, confrontando una colonna utf8 con una colonna latin1 preclude l'uso di un indice.
Il confronto di colonne dissimili (confrontare una colonna di stringhe con una colonna temporale o numerica , ad esempio) può impedire l'uso di indici se i valori non possono essere confrontati direttamente senza conversione. Per un dato valore come 1 nella colonna numerica, potrebbe essere uguale a qualsiasi numero di valori nella colonna di stringhe come '1', '1', '00001' o '01 .e1 '. Questo esclude l'uso di qualsiasi indice per la colonna di stringhe.
Per trovare il valore MIN() o MAX() per una colonna indicizzata specifica key_col. Questo è ottimizzato da un preprocessore che controlla se si utilizza 01_WHERE key_part_N = costante su tutte le parti chiave che si verificano prima di key_col nell'indice. In questo caso, MySQL esegue una ricerca con chiave singola per ciascuna espressione MIN() o MAX() e la sostituisce con una costante . Se tutte le espressioni vengono sostituite con costanti, la query restituisce immediatamente. Ad esempio:
per ordinare o raggruppare una tabella se la selezione o raggruppamento avviene su un prefisso più a sinistra di un indice utilizzabile (ad esempio, ORDER BY key_part1, key_part2). Se tutte le parti chiave sono seguite da DESC, la chiave viene letta nell'ordine inverso . Vedi Sezione 9.2.1.15, "ORDINA PER OTTIMIZZAZIONE" e Sezione 9.2.1.16, "GRUPPO PER OTTIMIZZAZIONE".
In alcuni casi, una query può essere ottimizzata per recuperare i valori senza consultando le righe di dati. (Un indice che fornisce tutti i risultati necessari per una query è denominato indice di copertura.) Se una query utilizza da una tabella solo le colonne incluse in alcuni indici, i valori selezionati possono essere recuperati dall'albero indice per maggiori velocità:
Grazie ... upvote –
Grazie @Stack .. Ho aggiunto un po 'di parte del documento da MySQL .. spero utile – scaisEdge