Mysql
 sql >> Base de données >  >> RDS >> Mysql

Recherche MySQL FULLTEXT dans> 1 table

Rejoignez après les filtres (par exemple, rejoignez les résultats), n'essayez pas de rejoindre puis de filtrer.

La raison en est que vous perdez l'utilisation de votre index de texte intégral.

Clarification en réponse au commentaire :j'utilise ici le mot joindre de manière générique, et non comme JOIN mais comme synonyme de fusionner ou combiner.

Je dis essentiellement que vous devriez utiliser la première requête (plus rapide), ou quelque chose comme ça. La raison pour laquelle il est plus rapide est que chacune des sous-requêtes est suffisamment épurée pour que la base de données puisse utiliser l'index de texte intégral de cette table pour effectuer la sélection très rapidement. Joindre les deux ensembles de résultats (vraisemblablement beaucoup plus petits) (avec UNION ) est également rapide. Cela signifie que tout est rapide.

La version lente finit par parcourir de nombreuses données en les testant pour voir si c'est ce que vous voulez, plutôt que de trier rapidement les données et de ne rechercher que les lignes que vous êtes susceptible de vouloir réellement.