Announcement

Collapse
No announcement yet.

Eine Frage zu VIEW

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

  • Eine Frage zu VIEW

    Hallo,

    ich setze in meiner DB viele View's ein. In meinem Programm setze ich dann SELECT-Scripte auf diese View's ab. Nun habe ich bei einer DB ein paar Geschwindigkeitsprobleme mit meinen Abfragen.

    Meine VIEW beinhaltet ein SELECT auf eine Tabelle mit zwei INNER JOIN auf andere Tabellen mit diversen WHERE-Klauseln sowie GROUP BY. Darauf setze ich ein SELECT mit weiteren WHERE-Klauseln ab. Bei einer Tabelle mit ca 1 Mio. Datensätzen dauert die Abfrage bis zu vier Minuten.

    In der View selbst verwende ich auch nur die Felder der Tabellen die benötigt werden. Im ORDER BY stehen Felder die indiziert sind.

    Hat jemand eine Idee, wie man ein derartige Abfrage optimieren kann oder sollte man vieleicht auf den Einsatz einer View hier verzichten und das gesamte Script zusammenbasteln und in einem Rutsch absetzen ?

    Verschiedene Test's im Architecten brachten mich nicht so wirklich weiter.

  • #2
    Hallo,

    Du solltest nicht nur für die Spalten für den Order, sondern auch für die Where-Bedingungen Indexe anlegen.

    Gruß
    Uschi

    Comment


    • #3
      Danke, aber das brachte nicht so viel. Da ich die Test's im Architecten ausführe, denke das hier das Problem liegt. Starte ich die View direkt dauert es lange. Die Ausführung in einem SQL-Fenster läuft schneller. Auch der Execution Plan gibt nicht viel her. Es ist schon etwas merkwürdig. Ich glaube ich muss da noch ein wenig rumprobieren.

      Comment


      • #4
        Originally posted by Harald Lietz View Post
        Danke, aber das brachte nicht so viel. Da ich die Test's im Architecten ausführe, denke das hier das Problem liegt. Starte ich die View direkt dauert es lange. Die Ausführung in einem SQL-Fenster läuft schneller. Auch der Execution Plan gibt nicht viel her. Es ist schon etwas merkwürdig. Ich glaube ich muss da noch ein wenig rumprobieren.
        welche Version ist denn im Einsatz? In früheren Versionen wurde die View komplett ausgeführt, bevor das äußere SELECT drankam. IIRC seit V8.0 wird die View mit dem äußeren Statement verheiratet, so dass sich die Ausführungszeit gegenüber dem aufgelösten SQL Statement nicht mehr unterscheiden sollte. Seit Version 9 gibt es ein aggressiveres Caching für die ganzen TEMP-Resultate, was auch wieder zu einer besseren Performance führen sollte.

        Comment


        • #5
          Darauf zielte auch meine Frage. Wird das VIEW erst ausgeführt und dann das SELECT-Statement, oder wird beides vor der Ausführung verbunden ? Ich benutze die Version 8.1.

          MfG

          Comment

          Working...
          X