sebo: subselect

Beitrag lesen

hatte ich neulich schonmal gefragt, hoffe aber diesmal auf kompetentere hilfe:

  
SELECT  
   a.name,  
   (SELECT id, name, weight, height, border, title FROM photos WHERE user_id = a.id LIMIT 0,1) AS (userid, username, weight, height, border),  
   a.handy  
  
FROM defaultusers a  
WHERE  
   a.status = 'N',  
   ...weitere bedingungen  
ORDER BY a.datum DESC  
LIMIT 0,10  

Das SubSELECT muss nicht zwingend ein Ergebnis rückliefern.
Wenn es aber ein Ergebnis hat, dann möchte ich es gern in das Main-Select übernehmen. Weiss jemand wie man es hinbekommen kann? Leider fällt mir auch nicht ein, wie man es mit AS anstellen kann.

Ein JOIN kommt hier auch nicht in Frage, da JOIN's auf große Datenbanken nicht im Zusammenhang mit SQL_CALC_FOUND_ROWS funktionieren, da SQL_CALC_FOUND_ROWS auch den JOIN durchgeht und so die Ausgabe um bis zu 30 Sekunden verzögert.

Ein Messung hat jedoch ergeben, dass es einfacher ist auf einen JOIn zu verzichten, als auf SQL_CALC_FOUND_ROWS, denn die einzige Alternative: Ein weiteres Statement mit COUN() würde mit derselben WHERE-klausel noch lahmer sein als SQL_CALC_FOUND_ROWS+JOIN.

Deshalb möchte ich die Verbindung zur größeren Datenbank (über 400.000 Datensätze) in einem Subselect herstellen der in dieser Hinsicht deutlich schneller ist.

Leider bekomme ich die Werte aus dem Subselect mit AS nicht raus.
Hat jemand eine Idee?