Bonjour,
Mon développeur ne maîtrisant pas totalement SQL et ses subtilités, on aurait besoin d'un coup de pouce pour simplifier/optimiser la requete suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT DISTINCT video_id, video_type, video_titre, video_description, video_idPartenaire, video_urlMini, video_dateValide, partenaire_valide, partenaire_redirection, 
  ( SELECT COUNT(Y.v_appartient_c_idVideo) AS NbCorresp FROM  lol_v_appartient_c  Y
   WHERE Y.v_appartient_c_idVideo=81 AND Y.v_appartient_c_idCategorie IN (SELECT Z.v_appartient_c_idCategorie FROM lol_v_appartient_c Z WHERE Z.v_appartient_c_idVideo=video_id)) as Compte,
  ( SELECT categorie_singulier FROM lol_categorie,lol_v_appartient_c X
   WHERE X.v_appartient_c_idVideo=video_id AND X.v_appartient_c_default=1 AND categorie_id=X.v_appartient_c_idCategorie ) as categorie_singulier
FROM lol_categorie,lol_v_appartient_c A,lol_video LEFT JOIN lol_partenaire ON video_idPartenaire=partenaire_id 
WHERE 
(A.v_appartient_c_idCategorie IN (SELECT W.v_appartient_c_idCategorie FROM lol_v_appartient_c W WHERE W.v_appartient_c_idVideo=81) AND video_id=A.v_appartient_c_idVideo) AND 
(video_idPartenaire=0 OR (partenaire_valide=1 AND partenaire_redirection<>1)) AND 
video_valide=1 AND video_id<>81 AND video_langue='fr' ORDER BY Compte DESC LIMIT 0,14
Cette requête affiche les 14 premières vidéos ayant le plus de catégories similaires avec "les catégories" de la vidéo visionnée (dans notre exemple la vidéo 81)
La requête actuelle met 3.06 secondes pour s’exécuter en parcourant 2700 vidéos. On trouve cela un peu long d'ou notre demande sur ce poste. PS: le serveur est plutôt puissant

Je remercie d'avance l’âme charitable qui tentera de nous aider