optimisation requete sql

Invité
Invité n'ayant pas de compte PHPfrance

04 nov. 2012, 13:58

Bonjour à tous,

J'ai écrit la requête suivante qui fonctionne très bien:

Code : Tout sélectionner

SELECT DISTINCT td.tid, td.name FROM term_data td LEFT JOIN term_node tn ON tn.tid = td.tid WHERE td.vid = 6 AND tn.nid IN ( SELECT n.nid FROM node n INNER JOIN term_node tn ON n.nid = tn.nid INNER JOIN term_data td ON tn.tid = td.tid WHERE tn.tid = 12 AND n.status =1 )
J'ai essayé de l'optimiser au mieux mais je souhaite savoir s'il est possible de l'écrire de manière plus performante, ou si c'est déjà top ;)
Merci pour vos réponses.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

05 nov. 2012, 21:08

Bonjour, voici un essai de simplification en remplaçant la relation ensembliste "IN SELECT" par la méthode relationnelle des jointures "JOIN".
SELECT DISTINCT td.tid, td.name
FROM term_data td 
LEFT JOIN (term_node tn  JOIN node n ON n.nid = tn.nid) ON tn.tid = td.tid
WHERE td.vid = 6 AND tn.tid = 12 AND n.status =1
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène