AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Sauert zu lange

Ein Thema von Dumpfbacke · begonnen am 23. Jun 2016 · letzter Beitrag vom 23. Jun 2016
 
nahpets
(Gast)

n/a Beiträge
 
#7

AW: SQL Sauert zu lange

  Alt 23. Jun 2016, 07:47
Habe das Statement einmal strukturell verändert, um es für mich lesbarer zu machen.

Dabei hab' ich (nach meinem Verständnis) Vereinfachungen eingebaut und Verständnisprobleme mit Kommentaren versehen.

Allerdings habe ich keine Ahnung, ob das irgendwas am Geschwindigkeitsproblem ändert.
SQL-Code:
from MASTER
Left Outer JOIN SLAVE
on MASTER.Vorgangsnummer = SLAVE.Vorgangsnummer
and SLAVE.ZusatzStatus in ('EZ','EV','EF','EA','EQ','EP')
Left Outer Join MASTER UrMaster
on MASTER.Vorgangursprung = UrMaster.Vorgangsnummer
where MASTER.Status = 'In Bearbeitung'
and SLAVE.SlaveNummerr is not NULL
and MASTER.FATW = 'Aktive'
and
    (
     -- Beginn Verständnisproblem
     -- Hier verstehe ich nicht genau, was gemeint ist und weiß nicht, wie FireBird das handhabt.
     -- Das Is Null bezieht sich nur auf Status = 'In Arbeit'?
     ( SLAVE.SlaveStatus in ('Warten','Unterbrochen')
      or SLAVE.SlaveStatus = 'In Arbeitand SLAVE.Dzusatz is NULL
      -- Bei Is Null-Bezug nur auf 'In Arbeit' würd' ich das in Klammern setzen.
      or (SLAVE.SlaveStatus = 'In Arbeitand SLAVE.Dzusatz is NULL)
     )
     -- oder ist dieses gemeint?
     (
          SLAVE.SlaveStatus in ('Warten','Unterbrochen','In Arbeit')
      and SLAVE.Dzusatz is NULL
     )
     -- Ende Verständnisproblem
     
     or ( SLAVE.SlaveStatus = 'In Abreit'  <-- Schreibfehler? 'In Arbeit'
         and SLAVE.Dzusatz = 'Gesperrt'
         and SLAVE.Sollende < Current_Date
        )
    )
and
    (
     (
      (
          MASTER.AltesSystem like 'Start%'
       or MASTER.AltesSystem like 'Vorgang%'
      )
      and MASTER.AltesSystem not like '%Abbruch%'
      and MASTER.Storno is null
     )
     or (UrMaster.referenznr = 'ABT_25')
    )
Dann hätte ich noch ein fachliches Problem:
Worauf bezieht sich das UrMaster.referenznr = 'ABT_25' im zweiten Left outer Join.
Irgendwie kann ich an der Stelle, an der die Oder-Bedingung für die 'ABT_25' steht, nicht so recht den Sinn erkennen.

Es findet eine Grundsätzliche Verbindung über MASTER.Vorgangursprung = UrMaster.Vorgangsnummer statt.
Es gibt ein paar Einschränkungen und die letzte Einschränkung gilt für AltesSystem like 'Start%' oder like 'Vorgang%', sofern nicht AltesSystem like '%Abbruch% und Storno is null, wobei diese Einschränkung nicht für die 'Abt_25' gilt.
D. h.: Für 'Abt_25' sollen die Daten auch geliefert werden, wenn AltesSystem like 'Start%' oder like 'Vorgang%' ...?
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz