Bonjour,

j'exécute une requête pour récupérer une liste de fichiers contenant tous les mots de la recherche.

La structure de mes tables est la suivante :

words
id
word (index)

words_files
id
word_id (index)
file_id (index)

Et la requête utilisée :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SELECT WF.file_id 
FROM words_files WF 
JOIN words W ON WF.word_id = W.id 
JOIN (SELECT file_id FROM words_files WF INNER JOIN words W ON WF.word_id = W.id WHERE word LIKE "mot1" ) AS t1 ON WF.file_id = t1.file_id 
WHERE word LIKE "mot2"

Je fais donc une intersection entre chaque requête qui trouve les fichiers dans lesquels un mot est présent.. mais voilà, à partir d'un certain volume de données cette requête devient extrêmement lente, surtout à cause de la sous-requête il me semble (donc ça empirera au plus il y aura de mots dans la recherche)..

Donc si vous avez des idées pour soit optimiser cette requête, soit pour le faire d'une autre façon, ça m'aiderait bcp

Merci