Vinzenz Mai: Query optimieren / mysql 5

Beitrag lesen

Hallo,

Vielen Dank für die Anmerkungen. Da sind viele nützliche Tips drin, die ich mir merken werde.

Es wurde mir ein Child genannt, das definitiv ein  Nicht-Child ist.

SELECT node.payload FROM 000node parent INNER JOIN 000node node ON node.lft BETWEEN parent.lft AND parent.rgt WHERE parent.payload = 4303 ORDER BY node.lft


>   
> erhalte ich als Ergebnis:  
>   
> 4303  
> 5290  
>   
> Aber die ID 5290 ist definitiv kein Child von 4303.  
  

> Mehr beunruhigt mich, dass ich ein falsches Ergebnis vorliegen habe.  
> Wie kann ich das anhand der Tabelle per Sichtung verifizieren?  
  
Schau Dir an, wie die betreffenden Knoten aussehen:  
  
~~~sql
SELECT  
    payload,  
    lft,  
    rgt  
FROM  
    000node  
WHERE  
    payload IN (4303, 5290)  

Schau Dir den lft-Wert des Kindknotens und die Grenzen des Elterknoten an.
Ob ich den Join implizit in der WHERE-Klausel oder explizit in der JOIN-Klausel schreibe ist beim INNER JOIN für die Ergebnismenge nicht relevant.

Freundliche Grüße

Vinzenz