Voici le scénario:MySQL - Texte intégral Recherche - Perdre index
- MySQL
- ont 1 MyISAM Tableau
- Colum v.value nommé a un indice de texte intégral
La requête de base fonctionne correctement, utilise l'index comme prévu:
SELECT p.online_identifier
FROM (...)
WHERE r.area_id = 3 AND s.state_id= 4
AND (snap.area_has_catalogues_attributes_id = 7028
AND MATCH (v.value) AGAINST('+SomeBrand' IN BOOLEAN MODE))
Maintenant, lorsque j'ajoute un OU, l'index de recherche de texte intégral (sur v.value) n'est pas utilisé. Je cours Explain pour le vérifier.
La requête ressemblerait à quelque chose comme ceci:
(...) WHERE r.area_id = 3 AND s.state_id= 4 AND (snap.area_has_catalogues_attributes_id = 7028 AND MATCH (v.value) AGAINST('+SomeBrand' IN BOOLEAN MODE)) OR (snap.area_has_catalogues_attributes_id = 7045 AND MATCH (v.value) AGAINST('+OtherBrand' IN BOOLEAN MODE))
Je ne comprends pas pourquoi. Des idées?
Tout d'abord, merci beaucoup pour votre aide. Il m'a guidé dans la bonne direction :) J'ai essayé votre conseil et MySQL a utilisé l'index :) Résultat: moins de lignes traitées. –
Si cela ne vous dérange pas, puis-je avoir votre avis sur la question suivante? [http://stackoverflow.com/questions/16689714/mysql-analyze-query]. Il s'agit de la performance de la requête qui en résulte :) –