[MySQL 4.0] Geschwindigkeitsproblem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL 4.0] Geschwindigkeitsproblem

    Hallo, ich habe folgenden SELECT Befehl nur leider dauert der bei mir ewig lang bei der der ausführung hat jemand eine Idee wie ich diesen SQL-Befehl tunen kann?


    Code:
    SELECT s.spot, s.x, s.y, s.width, s.height, r.part_id, r.part_nr, r.position, d.descr, p.pos,
    r.amount, COUNT(*), r.is_group, t.id, t.parent, t2.field_value FROM Spots AS s
    LEFT JOIN PartSpots AS p ON (s.spot = p.spot)
    LEFT JOIN SpareParts AS r ON (p.pos_id = r.pos_id)
    LEFT JOIN ElementDesc AS d ON r.pos_id = d.id_value AND d.tab_name = 'SpareParts AND d.language = 'GER')
    LEFT JOIN PartSpots AS p2 ON (s.spot = p2.spot)
    LEFT JOIN SparePartsTree AS t On (t.field_value = r.pos_id AND (t.level = 'part_group' || t.level = 'part'))
    LEFT JOIN SparePartsTree AS t2 ON (t.parent = t2.id)
    WHERE file_id = 45
    GROUP BY s.spot, s.x, s.y, s.width, s.height, r.part_id, r.part_nr, r.position, d.descr, p.pos_id, r.amount
    ORDER BY r.position, r.part_nr, r.part_id
    Vorschläge, Ideen?
    Unix Rulez

  • #2
    Re: [MySQL 4.0] Geschwindigkeitsproblem

    mal mit EXPLAIN anschauen ...?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      table - type - possible_keys - key - key_len - ref - rows - Extra

      s - ALL - n/a - n/a - n/a - n/a - 860 - where used; Using temporary; Using filesort
      p - index - n/a - PRIMARY - 16 - n/a - 894 - Using index
      r - eq_ref - PRIMARY, i_pos - PRIMARY - 8 - p.pos_id - 1 - n/a
      d - eq_ref - PRIMARY, i_id_value - PRIMARY - 38 - const, r.post_id, cons - 1 - n/a
      p2 - index - n/a - PRIMARY - 16 - n/a - 894 - Using index
      t - ref - i_value, i_level - i_value - 4 - r.pos_id - 18 - n/a
      t2 -ref - i_id - i_value - 8 - t.parent - 16 - n/a


      ideen?
      Unix Rulez

      Kommentar


      • #4
        sorry fehler folgende werte sind richtig:

        table - type - possible_keys - key - key_len - ref - rows - Extra

        s - ALL - n/a - n/a - n/a - n/a - 136001 - where used; Using temporary; Using filesort
        p - index - n/a - PRIMARY - 16 - n/a - 135368 - Using index
        r - eq_ref - PRIMARY, i_pos - PRIMARY - 8 - p.pos_id - 1 - n/a
        d - eq_ref - PRIMARY, i_id_value - PRIMARY - 38 - const, r.post_id, cons - 1 - n/a
        p2 - index - n/a - PRIMARY - 16 - n/a - 135368 - Using index
        t - ref - i_value, i_level - i_value - 4 - r.pos_id - 1- n/a
        t2 -ref - i_id - i_value - 8 - t.parent - 1 - n/a
        Unix Rulez

        Kommentar


        • #5
          file_id ist in der Tabelle spots?
          wenn ja, leg mal einen Index darauf
          TBT

          Die zwei wichtigsten Regeln für eine berufliche Karriere:
          1. Verrate niemals alles was du weißt!


          PHP 2 AllPatrizier II Browsergame

          Kommentar


          • #6
            gesagt getan, bringt leider keinen erfolg,
            Unix Rulez

            Kommentar


            • #7
              zeig mal das neue Explain
              TBT

              Die zwei wichtigsten Regeln für eine berufliche Karriere:
              1. Verrate niemals alles was du weißt!


              PHP 2 AllPatrizier II Browsergame

              Kommentar


              • #8
                table type possible_keys key key_len ref rows Extra
                s ref i_fileid i_fileid 8 const 42 where used; Using temporary; Using filesort
                p index NULL PRIMARY 16 NULL 135368 Using index
                r eq_ref PRIMARY,i_pos PRIMARY 8 p.pos_id 1
                d eq_ref PRIMARY,i_id_value PRIMARY 38 const,r.pos_id,const 1
                p2 index NULL PRIMARY 16 NULL 135368 Using index
                t ref i_value,i_level i_value 4 r.pos_id 1
                t2 ref i_id i_id 8 t.parent 1
                Unix Rulez

                Kommentar


                • #9
                  noch ein Indix auf PartSpots.spots legen
                  TBT

                  Die zwei wichtigsten Regeln für eine berufliche Karriere:
                  1. Verrate niemals alles was du weißt!


                  PHP 2 AllPatrizier II Browsergame

                  Kommentar


                  • #10
                    Folgende Indexe solltest du haben:

                    Spots:
                    spot_x _y_width_height

                    SpareParts:
                    spot

                    und:


                    part_id_part_nr_position_amount

                    eventuell auch noch:

                    position_part_nr_part_id

                    ElementDesc:
                    id_value_tab_name_language

                    etc.

                    Oder wird bei einem GROUP BY kein Index benutzt?

                    Nachtrag:
                    Verhält sich leider doch anders. Bei einem GROUP BY kann man anscheinend nur einen Index anlegen wenn man die gleichen Daten als Ausgabe haben möchte. Wenn eine weitere Spalte aus der Tabelle gebraucht wird die nicht im GROUP BY definiert ist, greift der Index nicht mehr.

                    In Deinem Fall sollte es also funktionieren.
                    Zuletzt geändert von Sebastian W; 05.04.2005, 15:29.
                    Grüsse,
                    Sebastian


                    Profil Flex Freelancer
                    Twitter twitter.com/flashhilfe
                    Web Flash und Flex Community

                    Kommentar


                    • #11
                      index auf partspots.spots war die lösung sql-laufzeit ging von 33,03 Sek auf 0.06 sekunden runter danke alle zusammen
                      Unix Rulez

                      Kommentar

                      Lädt...
                      X