Può mysql utilizzare un indice per un WHERE ... IN ricerca?
-
16-10-2019 - |
Domanda
Al momento dispone di una query nella nostra applicazione in questo modo:
SELECT * FROM combos WHERE text = '[text]'
Stiamo mettendo una colonna category_id
su combos
, e la query cambieremo a questo:
SELECT * FROM combos WHERE category_id in ([c1],[c2],[...]) AND text = '[text]'
Al momento, c'è un indice su combos(text)
. Stiamo pensando di rimuoverlo e mettere uno sulla combos(category_id, text)
. Sarà mysql essere in grado di utilizzare il nuovo indice come ha fatto quello vecchio? Se la risposta è 'dipende', che cosa dipende? Dobbiamo mantenere quello vecchio nel caso in cui non può?
Soluzione
a volte .... fintanto che non v'è alcuna condizione di gamma:
http://dev.mysql.com/ doc / refman / 5.5 / it / index-merge-optimization.html
si potrebbe essere migliore di con (text, category_id)
- a seconda della distribuzione dei dati
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow