Kann MySQL einen Index für eine wo… in Abfrage verwenden?
-
16-10-2019 - |
Frage
Wir haben derzeit eine Abfrage in unserer App wie folgt:
SELECT * FROM combos WHERE text = '[text]'
Wir setzen eine category_id
Säule auf combos
, und die Abfrage wird sich zu diesem ändern:
SELECT * FROM combos WHERE category_id in ([c1],[c2],[...]) AND text = '[text]'
Im Moment gibt es einen Index auf combos(text)
. Wir denken darüber nach, es zu entfernen und einen anzuziehen combos(category_id, text)
. Wird MySQL den neuen Index so verwenden können, als hätte er den alten getan? Wenn die Antwort "Es hängt davon ab" ab, worauf hängt sie dann ab? Sollten wir den alten behalten, falls es nicht kann?
Lösung
Manchmal .... solange es keine Reichweite gibt:
http://dev.mysql.com/doc/refman/5.5/en/index-merge-optimization.html
Sie könnten besser sein mit (text, category_id)
- Abhängig von Ihrer Datenverteilung!
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow