AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ORDER in Unterselect sehr langsam
Thema durchsuchen
Ansicht
Themen-Optionen

ORDER in Unterselect sehr langsam

Ein Thema von Gruber_Hans_12345 · begonnen am 13. Okt 2009 · letzter Beitrag vom 15. Okt 2009
Antwort Antwort
Seite 5 von 5   « Erste     345   
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#41

Re: ORDER in Unterselect sehr langsam

  Alt 15. Okt 2009, 12:47
@webcss: Das würde nur den größten AuftragID leifern und nicht den AuftragID der in dem datensatz mit der größten BUCHUNG steht ....


ABER :
Die letzte Stored Procedure läuft nun sehr gut

Habs nun "auf gut Glück" ins Programm selbst eingebaut

und brauch nun statt den 3 sekunden keine 1.5 sekunden mehr sondern mit der neuen nur mehr 60 ms

perfekt danke an alle
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#42

Re: ORDER in Unterselect sehr langsam

  Alt 15. Okt 2009, 12:52
Hallo,

das ist doch schön

*Rechnung schreib*


Heiko
Heiko
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#43

Re: ORDER in Unterselect sehr langsam

  Alt 15. Okt 2009, 12:56
Hallo Hans,

gratuliere zur Lösung. Es würde mich aber doch interessieren, wie schnell mein SQL ist. Postest Du dazu mal noch das Ergebnis?

Gruß,

Lutz
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#44

Re: ORDER in Unterselect sehr langsam

  Alt 15. Okt 2009, 13:00
Ja gerne, also die "Sieger" Lösung bracuht für die Abfrage 60ms
Deine braucht 2.171 sekunden, allerdings liefert es auch falsche Auftragsdaten als ergebnis ....
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#45

Re: ORDER in Unterselect sehr langsam

  Alt 15. Okt 2009, 13:40
Zitat von Gruber_Hans_12345:
@webcss: Das würde nur den größten AuftragID leifern und nicht den AuftragID der in dem datensatz mit der größten BUCHUNG steht ....
Also ich hab das probiert mit meinen Daten in ähnlicher Konstellation, und es liefert mir die passende auftragID zum passenden Datum für die jeweilige Person...
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#46

Re: ORDER in Unterselect sehr langsam

  Alt 15. Okt 2009, 14:23
Ich bin davon ausgegangen, dass Buchung unique ist, das war wohl falsch.

Den falschen SQL will ich aber nicht auf mir sitzen lassen. Wenn ich nicht wieder von den falschen Voraussetzungen ausgehe, sollte der das richtige Ergebnis liefern:

SQL-Code:
SELECT P.ID, TEMP.BUCHUNG, TB.AUFTRAGID FROM PERSONAL P
JOIN (SELECT PERSONALID, MAX(BUCHUNG) BUCHUNG FROM TERMINAL_BUCHUNGEN GROUP BY PERSONALID) TEMP on TEMP.PERSONALID=P.ID
JOIN TERMINAL_BUCHUNGEN TB ON TEMP.BUCHUNG = TB.BUCHUNG and TEMP.PERSONALID = TB.PERSONALID
Eigentlich kann ich mir nicht vorstellen, dass dieser SQL so grottenschlecht ist. Mit den passenden Indizes sollte der wenigstens in die Nähe der Siegerlöscung kommen.

Lutz
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#47

Re: ORDER in Unterselect sehr langsam

  Alt 15. Okt 2009, 14:26
Zitat von webcss:
Zitat von Gruber_Hans_12345:
@webcss: Das würde nur den größten AuftragID leifern und nicht den AuftragID der in dem datensatz mit der größten BUCHUNG steht ....
Also ich hab das probiert mit meinen Daten in ähnlicher Konstellation, und es liefert mir die passende auftragID zum passenden Datum für die jeweilige Person...
Davon abgesehen liefert die SP auch die Datensätze wo AuftragID z.B. NULL ist.
Die Ausführungsgeschwindigkeit ist gleich.

Ich habe auch geprüft, ob evtl. unterschiedliche Daten zurückgegeben werden: Fehlanzeige, die Rückgabewerte miener Abfrage und die der SP sind identisch.
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#48

Re: ORDER in Unterselect sehr langsam

  Alt 15. Okt 2009, 14:39
ok, die von delphianer, läuft nun auch mit 200ms (wobei die 200ms und 60ms wahrscheinlich ca gleich sind .... )
Die Daten sind auch richtig, es werden mit dem INNER JOIN halt die NULL ausgeblendet.

Die Daten von webcss, sind aber definitiv falsch, da hier ja nur der MAX(AUFTRAGID) gelifert wird, und das ist ja nicht gewünscht

Übrigens ein sehr interessanter Ansatz das bei delphianer - Danke vielmals dafür, so hatteich das nich nei irgendwo verwendet ...
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#49

Re: ORDER in Unterselect sehr langsam

  Alt 15. Okt 2009, 14:51
Zitat von Gruber_Hans_12345:
Die Daten von webcss, sind aber definitiv falsch, da hier ja nur der MAX(AUFTRAGID) gelifert wird, und das ist ja nicht gewünscht
Das basiert allerdings nur auf einer Theorie, oder hast Du es wenigstens mal ausprobiert? Ich habe es ausprobiert.

Die Aufgabenstellung: Finde die PersonalID und AuftragID zur jeweils letzten Buchung.
Versuchsaufbau:

Eine VIEW mit meiner Lösung, eine SP ala hoika.

Dann folgende Abfrage:
SQL-Code:
select spb.PersonalID, vwb.PersonalID, spb.Buchung, vwb.Buchung, spb.AuftragID, vwb.AuftragID from Sp_Buchung spb
inner join vw_Buchung vwb on vwb.AuftragID=spb.AuftragID
where spb.AuftragID is not null
and (vwb.AuftragID<>spb.AuftragID or vwb.Buchung <> spb.Buchung or vwb.PersonalID<>spb.PersonalID)
Sieh Dir das Ergebnis an (NULL) und sag mir was daran falsch ist...
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 5   « Erste     345   


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 12:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz