Jonny 5: Was ist schneller: LEFT JOIN oder IF Abfragen

Beitrag lesen

Hi DeviN,

Nun überlege ich den LEFT JOIN zu streichen und die Ränge durch If-Abfragen in der While-Schleife ausgeben zu lassen. Ungefähr so:

$result = mysql_query("SELECT  p.beitrag, p.userposts FORM posts p WHERE p.postid in ($postids)");

while($posts = mysql_fetch_array($result)) {
if($posts['userposts']<10) {$rank="...";}
elseif($posts['userposts']<20) {$rank="...";}
elseif($posts['userposts']<30) {$rank="...";}
elseif($posts['userposts']<40) {$rank="...";}
elseif($posts['userposts']<50) {$rank="...";}
...
elseif($posts['userposts']<500) {$rank="...";}
}


>   
> Ist dies überhaupt sinnvoll? Was ist der schnellere Weg?  
  
Da die Tabelle mit den Rängen ja recht überschaubar sein dürfte, wäre nichtmal unbedingt ein Index auf dem foreign key notwendig.  
  
In der Regel funktionieren Joins sehr schnell, und du gibst ja auch die Spalten an, die du benötigst. Ich würde mir da weiter keine Gedanken machen. Natürlich wenn man auf die Tabelle verzichten möchte, möglich sind bei MySql zb auch solche Dingens:  
  
SELECT rankid,  
CASE  
WHEN rankid<10 THEN 'bla'  
WHEN rankid<20 THEN 'blö'  
WHEN rankid<30 THEN 'blu'  
...  
ELSE 'blech' END rank\_name  
FROM posts;