AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird: letzte 10 Datensätze ausgeben zu langsam
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird: letzte 10 Datensätze ausgeben zu langsam

Ein Thema von Chemiker · begonnen am 30. Mai 2019 · letzter Beitrag vom 2. Jun 2019
Antwort Antwort
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.859 Beiträge
 
Delphi 11 Alexandria
 
#1

Firebird: letzte 10 Datensätze ausgeben zu langsam

  Alt 30. Mai 2019, 14:19
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC
Hallo zusammen,

mit diesem SQL – Abfrage will ich die letzten 10 Datensätze ausgeben:
Code:
select first 10 * from mw_tabelle order by mw_id desc
Allerdings dauert die Abfrage viel zu lange:

Auszug IB–Expert:

Plan:
PLAN SORT ((MW_TABELLE NATURAL))
------ Performance info ------
Prepare time = 16ms
Execute time = 16m 18s 79ms
Avg fetch time = 97.807,90 ms
Current memory = 13.623.656
Max memory = 133.137.376
Memory buffers = 3.000
Reads from disk to cache = 1.212.301
Writes from cache to disk = 0
Fetches from cache = 225.260.875

Meine Frage ist, gibt es eine Möglichkeit diese Abfrage zu beschleunigen?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.552 Beiträge
 
Delphi 7 Professional
 
#2

AW: Firebird: letzte 10 Datensätze ausgeben zu langsam

  Alt 30. Mai 2019, 14:25
Gibt's 'nen absteigenden Index auf mw_id?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.867 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Firebird: letzte 10 Datensätze ausgeben zu langsam

  Alt 30. Mai 2019, 14:27
Gibt's 'nen absteigenden Index auf mw_id?
Wahrscheinlich nicht. Denn er wird ja nicht verwendet, wie im Zugriffsplan ersichtlich.
Markus Kinzler
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
540 Beiträge
 
Delphi 12 Athens
 
#4

AW: Firebird: letzte 10 Datensätze ausgeben zu langsam

  Alt 30. Mai 2019, 15:20
Habe mal auf die Schnelle eine Procedure geschrieben, mit der man die IDs der letzten 10 Datensätze schnell ermitteln kann:

Delphi-Quellcode:
SET TERM ^ ;

create or alter procedure p_last10
returns (
    bmin integer,
    bmax integer)
as
declare variable c integer;
declare variable maxl integer;
declare variable btemp integer;
begin
  c=1;
  select max(buch_nr) from buchungen into :bmax;
  bmin=bmax;
  maxl=0;
  while ((c<10) and (maxl<100)) do
  begin
    select max(buch_nr) from buchungen where buch_nr<:bmin into :btemp;
    if (not btemp is null) then
    begin
      c=c+1;
      bmin=btemp;
    end

    maxl=maxl+1;
  end
  suspend;
end
^

SET TERM ; ^
Die Procedure liefert die beiden Werte bmin und bmax.
Maxl soll Verhindern, dass die Procedure in einer Endlosschleife hängenbleibt, wenn keine 10 Datensätze gefunden werden (ungetestet).

Dann braucht man nur noch den Select mit den beiden Parametern aus der Procedure ausführen.

Bei mir
select * from buchungen where buch_nr between :s and :t
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Firebird: letzte 10 Datensätze ausgeben zu langsam

  Alt 30. Mai 2019, 21:01
Wie schnell ist denn
select first 10 mw_id from mw_tabelle order by mw_id desc Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.898 Beiträge
 
Delphi 12 Athens
 
#6

AW: Firebird: letzte 10 Datensätze ausgeben zu langsam

  Alt 30. Mai 2019, 21:28
Wie schnell ist denn
select first 10 mw_id from mw_tabelle order by mw_id desc Gruß
K-H
Das steht im Eingangspost
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:37 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