Utente jolly nell'istruzione select su varcharcolumn indicizzato

0

Questa domanda si basa su alcuni test che ho svolto di recente per comprendere meglio il sistema di indicizzazione SQL.

Tabella con voci 500k, motore InnoDB

Questa è una query di selezione semplice su un campo varchar . La colonna name è non indicizzata.

Dopol'indicizzazione,questisonoirisultati:

Tutto bene fino a questo punto. Quando provo a inserire un carattere jolly all'inizio della chiave di ricerca, anche se la colonna è indicizzata, il tempo del risultato è quello del caso non indicizzato:

Mi chiedo perché sta succedendo questo? È perché l'indice non può più essere usato? Questo è risolvibile in alcun modo? posso ottenere un tempo di ricerca migliore anche se sto usando % sia all'inizio che alla fine della stringa di ricerca?

Grazie!

    
posta Ionut 20.05.2012 - 14:47
fonte

1 risposta

2

Se vuoi vedere che cosa sta usando mysql, prova a usare explain:

link

Per quanto riguarda il modo in cui vengono utilizzati gli indizi, quando hai un carattere jolly all'inizio e alla fine dell'espressione simile, ad es. '% qualcosa%', quindi no, l'indice non viene utilizzato, come da questo riferimento:

Le seguenti istruzioni SELECT non usano indici:

SELECT * FROM tbl_name WHERE key_col LIKE '%Patrick%';
SELECT * FROM tbl_name WHERE key_col LIKE other_col;

Nella prima istruzione, il valore LIKE inizia con un carattere jolly. Nella seconda istruzione, il valore LIKE non è una costante.

link

    
risposta data 20.05.2012 - 17:57
fonte

Leggi altre domande sui tag