sql ausgabe verschnellern

item: Bitte, bitte achte Auf Gross-Kleinschreibung. Auch Satzzeichen sind was nettes. Genauso wie dein Text sieht auch dein Code aus.
item: Dies ist kein Chat. Mehrfachposts hintereinander sind ncith gerne gesehen. Es gibt ein 'Bearbeiten'-Button mit dem man nachträglich in sein Beitrag was anfügen kann
item: Beantwortest du nicht mal meine Fragen die wirklich notwendig sind um dir ev helfen zu können.
item: Dass du keine Ahnung hast, dass wissen wir jetzt. steht je egientlich in jedem Beitrag. Es währe Sinnvoll sich nun auf das problem zu konzentrieren.
item: Damit wir dir helfen können, solltest du uns schon soweit entgegen kommen und unsere Beiträge lesen, überdenken und wenn da Gegenfragen oder so sind, diese nicht zu ignorieren. Wir fragen nicht weils Spass macht, sondern weil wir mehr wissen müssen um helfen zu können.

Also:
Was für eine DB ist denn da eigentlich dahinter?
Nachtrag:
@dbwizard
Ich kenne 'SQL-99 ANSI' nicht. Kennst du es? dann bitte übernehmen
 
Ok ich gebe mir Mühe. Also Schritt für Schritt jetzt. Was ist mit DB gemeint?


Hi,

Damit ist deine Datenbank (DB) gemeint, dies hast du ja schon beantwortet (SQL Anywhere 9) :-)

Was yaslaw mit "formatieren" gemeint hat ist, das du deinen SQL Code zwischen SQL-Tags setzt :

SQL:
WITH recursive ABCDE (forkchoiceid, ugcchoiceid, ugcphraseid,ugcparentchoiceid,phrase ) AS 
( SELECT forkchoiceid, ugcchoiceid,ugcphraseid,ugcparentchoiceid,phrase FROM ugcchoicelist
left outer join phrase on ugcphraseid = phraseid
WHERE ugcparentchoiceid = 610781 
and languageid = 4 
UNION ALL
SELECT A.forkchoiceid , A.ugcchoiceid,a.ugcphraseid,a.ugcparentchoiceid,c.phrase FROM ugcchoicelist A 
left outer join phrase C on a.ugcphraseid = phraseid
and languageid = 4 
INNER JOIN ABCDE B ON A.ugcparentchoiceid = B.forkchoiceid )
SELECT * FROM ABCDE
order by forkchoiceid


Frage : Kannst du die beiden Teile der Abfrage auseinandernehmen und separat ausführen ? Als einmal folgendes :


SQL:
SELECT forkchoiceid, ugcchoiceid,ugcphraseid,ugcparentchoiceid,phrase FROM ugcchoicelist
left outer join phrase on ugcphraseid = phraseid
WHERE ugcparentchoiceid = 610781 
and languageid = 4

...und dann als 2. :

SQL:
SELECT A.forkchoiceid , A.ugcchoiceid,a.ugcphraseid,a.ugcparentchoiceid,c.phrase FROM ugcchoicelist A 
left outer join phrase C on a.ugcphraseid = phraseid
and languageid = 4 
INNER JOIN ABCDE B ON A.ugcparentchoiceid = B.forkchoiceid

- Sind beide Teile "langsam" ?

Gruss
 
Zuletzt bearbeitet von einem Moderator:
Also die zweite ist ziemlich langsam

Gut, da sind wir schon einen Schritt weiter :-)


SQL:
SELECT A.forkchoiceid , A.ugcchoiceid,a.ugcphraseid,a.ugcparentchoiceid,c.phrase FROM ugcchoicelist A 
LEFT OUTER JOIN phrase C ON a.ugcphraseid = phraseid
AND languageid = 4

- Ist auf dem Attribut "languageid" ein Index ?
- Ist auf dem Attribut a.ugcphraseid ein Index ?
- Sind die Statistiken aktuell ?
- Ist das LEFT OUTER JOIN wirklich notwendig ?
 
Zuletzt bearbeitet von einem Moderator:
languageid = (Das ganze ist eien Art Teile-Katalog) das nutze ich um den deutschen text in phraseid auszugeben
a.ugcphraseid = wird genutzt um in die Tabelle "Phrase" zu gehen und sich die Texte zu holen
Das dritte kann ich dir leider auch nicht beantwortet

Ich versuche das jedoch gerade mal manuell nachzubauen.
 
Code:
SELECT forkchoiceid, ugcchoiceid,ugcphraseid,ugcparentchoiceid,phrase FROM ugcchoicelist 
  left outer join phrase on ugcphraseid = phraseid
    WHERE ugcparentchoiceid IN  
   (610781,610782,610784,610786,610787,610888,610789,610790,610791,610792,610793,610794,610795,   610796,610797,6107918,610799,610800,610801,610802,610803,610804,610805,610806,610807,610808,610809,610810,610811,610812,610813,610814,610815,610816,610817,610818) 
      and languageid = 4 
      order by forkchoiceid
 
Zurück