tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
Like Tree1Danke
ERLEDIGT
JA
ANTWORTEN
23
ZUGRIFFE
615
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    blackhawk2101 blackhawk2101 ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    19
    ich bin neu in sql und habe nun folgendes problem ich soll dieses "verschnellern" , habe jedoch keine ahnung wie ich das machen soll .
    Folgendes habe ich mit mühe und not zusammen geflickt :



    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
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Als allerserstes bitte den Code Formatiert in SQL-Tags schreiben, damit wir das auch lesen können
    [SQL]SELECT ...[/SQL]

    Nachtrag:
    item :Sind das wirklich Feld- und Tabellennamen? Mein Gott, da hötte ich sofoert ein Chaos
    item: Ich zitiere mich mal selber aus einem andeen Thread
    Performance-Verbesserungen sind keine eindeutige und einfache Sache. Es ist ein testen und heran tasten. Auswerten von Explainplans, SQL umschreiben - ggf. total umschreiben, weiter testen, Anzahl Datensätze der Tabelle vergleichen, ggf. Subqueries machen um die Datenmenge so früh wie möglich klein zu kriegen etc.
    Also, so einfach *schnipp*und ein SQL ist schnell - das kannst du vergessen. Diese ganzen Punkte die ich aufgezählt habe gehen auch nicht einfach so mit im Forum hin und her schreiben. Lies dich in das Thema ein. Verscuh es zu verstehen. Und dann setz dich hin und probier dich durch.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    blackhawk2101 blackhawk2101 ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    19
    wo finde ich den code?
     

  4. #4
    blackhawk2101 blackhawk2101 ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    19
    oh man nichts kann ich
     

  5. #5
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Zitat Zitat von blackhawk2101 Beitrag anzeigen
    oh man nichts kann ich
    Ist das dein Ernst? Dein Code, Dein SQL-Code, das Ding das da oben steht. Und mit Formatiert meine ich sowas
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    
    SELECT
        feld1,
        feld2
    FROM
        mytable
    WHERE
        fedl3=123
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  6. #6
    blackhawk2101 blackhawk2101 ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    19
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
     
    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
     

  7. #7
    blackhawk2101 blackhawk2101 ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    19
    ich glaube ich bin ein hoffnungsloser Fall
    für mich ist das was ich da gebastelt habe schon zu hoch .
     

  8. #8
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Sorry, aber hast du mein Posting gelesen? Nicht - auch gut. Ich kann die Beispiele machen wie der Tag aussehen muss-wird ignoriert. Ich mache ein Beispiel was mit 'formatiert' gemeint ist - ignoriert.

    Zudem ist das ganze nur ein Ausschnitt, den ich so nicht versteh. Ein SQL das mit WITH beginnt und einem SELECT endet?
    Was für eine DB ist denn da eigentlich dahinter?

    Und auf die Gefahr hin, dass ich mich wiederhole - mach dir mal nicht zuviel Hoffnung, dass wir etwas sehen könnten.
    Performance-Verbesserungen sind keine eindeutige und einfache Sache. Es ist ein testen und heran tasten. Auswerten von Explainplans, SQL umschreiben - ggf. total umschreiben, weiter testen, Anzahl Datensätze der Tabelle vergleichen, ggf. Subqueries machen um die Datenmenge so früh wie möglich klein zu kriegen etc.
    Also, so einfach *schnipp*und ein SQL ist schnell - das kannst du vergessen. Diese ganzen Punkte die ich aufgezählt habe gehen auch nicht einfach so mit im Forum hin und her schreiben. Lies dich in das Thema ein. Verscuh es zu verstehen. Und dann setz dich hin und probier dich durch.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  9. #9
    blackhawk2101 blackhawk2101 ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    19
    ich habe ja nicht mal eien idee was ich da anders machen soll... ich habes schon alles gelesen nur steh ich grade etwas neben mir . ich weiß ja selber nicht was ich da gebaut habe ich habe das eingegeben und schwub da kam das. ich weiß nicht wie was beginen muss und wies enden muss ich mache das erst seit 2 tagen . ich wurde ohne grundkenntnisse auf ne 4 milionen eintröäge datenbank losgelassen. und versuche irgendwie befehle zu finden und die logisch zusammen zu bauen

    wenns hiflt das programm heißt sql anywhere 9
    Geändert von blackhawk2101 (24.02.11 um 11:01 Uhr)
     

  10. #10
    dbwizard dbwizard ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Ort
    Zürich
    Beiträge
    285
    Zitat Zitat von yaslaw Beitrag anzeigen
    ....
    Ein SQL das mit WITH beginnt und einem SELECT endet?
    Was für eine DB ist denn da eigentlich dahinter?
    ...
    Hi,


    WITH : Im SQL-99 Definiert , zumindest seit Oracle 9 R2 wird es unterstützt
    (--> subquery factoring)

    Beispiel :

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    WITH myTestTab AS (
         SELECT 'Roger' FIRST_NAME,
                'Testo' SURE_NAME, 
                TO_DATE('01.01.1970','DD.MM.YYYY')  DAY_OF_BIRTH FROM DUAL UNION
         SELECT 'Hoger' FIRST_NAME, 
                'Aloah' SURE_NAME, 
                TO_DATE('01.01.1980','DD.MM.YYYY')  DAY_OF_BIRTH FROM DUAL UNION
         SELECT 'Noger' FIRST_NAME, 
                'Tarum' SURE_NAME, 
                TO_DATE('01.01.1975','DD.MM.YYYY')  DAY_OF_BIRTH FROM DUAL UNION
         SELECT 'Doger' FIRST_NAME, 
                'Herdo' SURE_NAME, 
                TO_DATE('01.01.1985','DD.MM.YYYY')  DAY_OF_BIRTH FROM DUAL
         )
         SELECT * 
             FROM myTestTab 
                WHERE DAY_OF_BIRTH BETWEEN TO_DATE('01.01.1969','DD.MM.YYYY') 
                                       AND TO_DATE('01.01.1976','DD.MM.YYYY')


    Gruss
    Geändert von dbwizard (24.02.11 um 11:06 Uhr)
     

  11. #11
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    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:
    Zitat Zitat von yaslaw Beitrag anzeigen
    Was für eine DB ist denn da eigentlich dahinter?
    Nachtrag:
    @dbwizard
    Ich kenne 'SQL-99 ANSI' nicht. Kennst du es? dann bitte übernehmen
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  12. #12
    blackhawk2101 blackhawk2101 ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    19
    Ok ich gebe mir Mühe. Also Schritt für Schritt jetzt. Was ist mit DB gemeint?
     

  13. #13
    dbwizard dbwizard ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Ort
    Zürich
    Beiträge
    285
    Zitat Zitat von blackhawk2101 Beitrag anzeigen
    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 :

    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    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 :


    Code sql:
    1
    2
    3
    4
    
    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. :

    Code sql:
    1
    2
    3
    4
    
    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
    Geändert von dbwizard (24.02.11 um 11:15 Uhr)
     

  14. #14
    blackhawk2101 blackhawk2101 ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    19
    Ah danke . Das war Idioten sicher.
     

  15. #15
    blackhawk2101 blackhawk2101 ist offline Mitglied
    Registriert seit
    Feb 2011
    Beiträge
    19
    Ich probiers mal
     

Ähnliche Themen

  1. Antworten: 15
    Letzter Beitrag: 16.08.09, 22:31
  2. Antworten: 7
    Letzter Beitrag: 04.12.08, 23:09
  3. Rendern verschnellern
    Von mibsteve im Forum Cinema 4D
    Antworten: 2
    Letzter Beitrag: 30.04.07, 18:28
  4. SQL - Query Ausgabe gibt mehrere Zeile aus -> Ausgabe soll nur 1 Zeile zurück geben
    Von Briefkasten im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 26.01.07, 12:10
  5. PHP ausgabe
    Von andulus im Forum PHP
    Antworten: 2
    Letzter Beitrag: 31.08.05, 16:42