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
 
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.441 Beiträge
 
Delphi 2007 Professional
 
#11

Re: ORDER in Unterselect sehr langsam

  Alt 13. Okt 2009, 18:03
also das
SQL-Code:
select p.id
  , (select tb.auftragid from terminal_buchungen tb
     where tb.personalid = p.id and
           tb.buchung = (select max(tbs.buchung) from terminal_buchungen tbs where tbs.personalid = p.id)
     ) as auftragid
  from personal p
verwendet
Code:
PLAN (TBS ORDER TERMINAL_BUCHUNGEN_BUCHUNG INDEX (TB_PERSONALID))
PLAN (TB INDEX (TB_BUCHUNG))
PLAN (P NATURAL)
also verwendet alle Indexe, braucht aber nun fast 9 sekunden


dieses Command
SQL-Code:
select p1.id, TB1.auftragid
from personal p1
join TERMINAL_BUCHUNGEN TB1 on TB1.personalid=p1.id
where
tb1.buchung in
  (select max(tb2.buchung) from TERMINAL_BUCHUNGEN tb2
   where (tb2.personalid=p1.id) and (tb2.auftragid=tb1.auftragid));
verwendet PLAN
Code:
PLAN (TB2 ORDER TERMINAL_BUCHUNGEN_BUCHUNG INDEX (TB_PERSONALID, TB_AUFTRAGID))
PLAN JOIN (P1 NATURAL, TB1 INDEX (TB_PERSONALID))
braucht aber fast 14 Minuten ...



ich habe mal folgendes probiert

SQL-Code:
set term #;

execute block
returns (ID INTEGER, MBID INTEGER)
as
declare variable ID1 INTEGER;
begin
  for execute statement
    'select ID FROM PERSONALinto ID1
  DO begin
    ID = ID1;
    MBID = null;
    execute statement 'SELECT FIRST 1 TB.AUFTRAGID FROM TERMINAL_BUCHUNGEN TB WHERE TB.PERSONALID = ' || ID || ' ORDER BY TB.BUCHUNG DESCINTO MBID;
    suspend;
  end
end

#
set term ;#
das braucht "nur" mehr 1.5 sekunden, also immer noch nicht wirklich schnell.

Code:
select count(*) from personal -> 268
select count(*) from Terminal_Buchungen -> 321937
Kann es sein, das es nicht mehr schneller geht diese Abfrage?
Gruss Hans

2B or not 2B, that is FF
  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 15:09 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 by Thomas Breitkreuz