Announcement

Collapse
No announcement yet.

Was weißt Du über SQL-Performance?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Was weißt Du über SQL-Performance?

    Hallo,

    Auf meiner Seite "Use The Index, Luke" gibt es ein kleines Quiz, mit dem Ihr euer SQL-Performance Wissen in nur drei Minuten testen könnt:

    http://use-the-index-luke.com/de/3-minuten-test

    Lösung und Erklärung gibt es am Schluss, sodass der Lerneffekt nicht ausbleibt.

    Viel Spass!
    Markus Winand - Coach, Trainer, Author: http://SQL-Performance-Explained.de/

  • #2
    Hallo,

    coole Sache. Danke für den Link.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Wahr wohl zu spät: 3 von 5 :-(

      Comment


      • #4
        Hallo,

        mir gings auch so 3/5. Beim zweiten mal aber wenigstens da 5/5

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Coole Seite, muss ich mal in Ruhe lesen!

          5/5 - hätt' ich nicht gedacht

          Danke!
          Tino
          Ich habs gleich!
          ... sagte der Programmierer.

          Comment


          • #6
            Hmm 3 von 5 (Oracle)
            Bei Antwort 2 habe ich den Punkt gewählt, dass eine Verbesserung möglich ist. Hintergrund: Ein Index ist per default ASC sortiert, während im Order By ein DESC angegeben wurde. Daher kann der Index m.M. Nach nicht zum sortieren verwendet werden.
            Auch wenn bei Top-N Queries der Sort effizienter (weniger Platzbedarf)durchgeführt wird, kann der Index in dem Fall nicht herhalten.
            Zugegebenermaßen ist das jetzt der Sonderfall Rownum<= 1 da bin ich mir nicht sicher, wie Oracle sich hier verhält. Müsste man mal per explain testen ob hier noch ein sort enthalten ist.

            Bei Antwort 5 hab ich den Punkt "hängt von den Daten ab" gewählt. Verwendet Oracle bei der ersten Variante aufgrund der Kardinalität von a z.B. einen Fast Full Scan und die Ergebnismenge sind 10Mio Einträge, im zweiten Fall entscheidet sich der Optimizer z.B. für einen Range Scan sowie Tabellenzugriff und die Ergebnismenge ist eine Zeile.

            Die Abfragegeschwindigkeit wird sich in diesem Fall sicherlich deutlich verbessern. In einem anderen Fall könnte sie sich deutlich verschlechtern oder auch fast gleich bleiben (innerhalb der angegebenen 10%)

            Dim
            Zitat Tom Kyte:
            I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

            Comment


            • #7
              Hallo dimitri,

              Die Datenbank (Oracle, aber auch alle anderen) können einen Index in beide Richtungen lesen. Daher ist es in diesem Fall egal, dass ASC/DESC nicht zusammenpassen.

              Den Explain-Plan findest du hier:

              http://use-the-index-luke.com/de/sql...st#quiz-ora-q2

              CREATE und INSERT Statements sind weiter oben auf der Seite, dann kannst du damit selbst experimentieren.

              Wegen Frage 5: Mit dem Fast-Full-Index-Scan hast du recht, das könnte passieren, wenn ein großer Teil der Tabelle abgefragt wird. Ich werde versuchen, die Frage so anzupassen, das Klar hervorgeht, dass nur ein verhältnismässig kleiner Teil der Tabelle abgefragt wird.

              Danke für dein Feedback.
              Markus Winand - Coach, Trainer, Author: http://SQL-Performance-Explained.de/

              Comment

              Working...
              X