Question

Nous avons actuellement une requête dans notre application comme ceci:

SELECT * FROM combos WHERE text = '[text]'

Nous mettons une colonne de category_id sur combos, et la requête changerons à ceci:

SELECT * FROM combos WHERE category_id in ([c1],[c2],[...]) AND text = '[text]'

À l'heure actuelle, il y a un index sur combos(text). Nous pensons à l'enlever et de mettre un sur combos(category_id, text). Est-ce que MySql pouvoir utiliser le nouvel indice comme il l'a fait l'ancien? Si la réponse est « ça dépend », qu'est-ce que cela dépend? Faut-il garder l'ancien dans le cas où il ne peut pas?

Était-ce utile?

La solution

parfois .... tant qu'il n'y a pas de condition de plage:

http://dev.mysql.com/ doc / refman / 5.5 / fr / index-fusion-optimization.html

vous pourriez être mieux avec (text, category_id) - en fonction de votre distribution de données

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top