Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ORDER in Unterselect sehr langsam (https://www.delphipraxis.net/141653-order-unterselect-sehr-langsam.html)

Gruber_Hans_12345 15. Okt 2009 10:43

Re: ORDER in Unterselect sehr langsam
 
also hab mir das IBExpert runtergeladen

da funkt das nun
SQL-Code:
execute block
returns (ID INTEGER, MBID INTEGER)
as
declare variable ID1 INTEGER;
begin
  for select ID FROM PERSONAL into :ID
  DO begin
    MBID = null;
    SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = :ID INTO :mbid;
    suspend;
  end
end
Allerdings sehe ich in der PErsonal keine infos über die Zeiten und co, so wie in der IBConsole ....

Delphianer 15. Okt 2009 11:01

Re: ORDER in Unterselect sehr langsam
 
Hi,

versuch mal folgendes:

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
Ich hoffe, ich habe mich nirgends mit den Namen vertan.

Grüße

hoika 15. Okt 2009 11:21

Re: ORDER in Unterselect sehr langsam
 
Hallo,

stimmt ;)

Deshalb schreibe ich sowas auch immer so

SQL-Code:
CREATE PROCEDURE SP_Bla
RETURNS (
    theID INTEGER,
    theMBID INTEGER)
AS
begin
  for select ID FROM PERSONAL into :theID
  DO begin
    MBID = null;
    SELECT FIRST 1 TB.AUFTRAGID
    FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = theID
    order by tb.buchung desc
    INTO :theMBID
    suspend;
  end
end
Oder Unterstriche, halt immer was eindeutiges.


Heiko

Gruber_Hans_12345 15. Okt 2009 11:31

Re: ORDER in Unterselect sehr langsam
 
Zitat:

Zitat von hoika
Hallo,

stimmt ;)

Deshalb schreibe ich sowas auch immer so

Oder Unterstriche, halt immer was eindeutiges.


Heiko

verstehe nicht, was du meinst?
funktionieren tut es nun ja, nur in der Personal Edition gibt es leider keine PLAN oder PERFORMANCE Daten, sehe nun nicht ob ich schneller bin oder nicht ...

mkinzler 15. Okt 2009 11:40

Re: ORDER in Unterselect sehr langsam
 
Also der Plan wird bei mir angezeigt

Gruber_Hans_12345 15. Okt 2009 11:43

Re: ORDER in Unterselect sehr langsam
 
ja, der PLAN schon :
SQL-Code:
execute block
returns (ID INTEGER, MBID INTEGER)
as
declare variable ID1 INTEGER;
begin
  for select ID FROM PERSONAL into :ID
  DO begin
    MBID = null;
    SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = :ID INTO :mbid;
    suspend;
  end
end

Statement Plan
--------------
PLAN (TB INDEX (TB_PERSONALID))
PLAN (PERSONAL NATURAL)

mkinzler 15. Okt 2009 11:47

Re: ORDER in Unterselect sehr langsam
 
Hat PERSONAL keinen PK bzw ist es ein anderer als ID?

Gruber_Hans_12345 15. Okt 2009 12:13

Re: ORDER in Unterselect sehr langsam
 
Doch aht es und ist auch der ID

meinst du wegen dem
PLAN (PERSONAL NATURAL)
?

Ich vermute mal das ist, weil ich die ganze PERSONAL Tabelle auslese, daher kann bzw brauche ich ja keinen Index in dem Fall oder?

mkinzler 15. Okt 2009 12:15

Re: ORDER in Unterselect sehr langsam
 
Könnte sein

webcss 15. Okt 2009 12:24

Re: ORDER in Unterselect sehr langsam
 
Versuch mal einfach folgendes:
SQL-Code:
SELECT Terminal_Buchungen.PersonalID, Max(Terminal_Buchungen.AuftragID), Max(Terminal_Buchungen.Buchung)
FROM Terminal_Buchungen
GROUP BY PersonalID
:wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:43 Uhr.
Seite 4 von 5   « Erste     234 5      

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