Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Am schnellsten die letzten 100 Datensätze aus ner DB laden? (https://www.delphipraxis.net/183407-am-schnellsten-die-letzten-100-datensaetze-aus-ner-db-laden.html)

p80286 7. Jan 2015 22:40

AW: Am schnellsten die letzten 100 Datensätze aus ner DB laden?
 
Zitat:

Zitat von AlexII (Beitrag 1285817)

Das schon, aber ich suchte nach einer besseren Lösung.

Und was gefällt Dir daran nicht?

Gruß
K-H

danielmagin 8. Jan 2015 11:29

AW: Am schnellsten die letzten 100 Datensätze aus ner DB laden?
 
Zitat:

Zitat von AlexII (Beitrag 1285800)
Hallo,

ich möchte aus einer DB am schnellsten die letzten 100 Datensätze holen. Ich kam auf diese Lösung, gibt's bessere Ideen?

Delphi-Quellcode:
SELECT knr FROM tbteilnehmer ORDER BY id_teilnehmer DESC LIMIT 100
Wird da nicht erst sortiert? Das kann doch unter Umständen lange dauern, oder?

also bei fast allen DB's ist der PK immer ein Aufsteigender Index (ASC)

somit erstelle dir ein INDEX auf das PK Feld als DESC index, somit muss er nicht natural laufen

dann klappt deine Anfrage immer sehr schnell.

AlexII 8. Jan 2015 11:37

AW: Am schnellsten die letzten 100 Datensätze aus ner DB laden?
 
[QUOTE=danielmagin;1285879]
Zitat:

Zitat von AlexII (Beitrag 1285800)
Hallo,

ich möchte aus einer DB am schnellsten die letzten 100 Datensätze holen. Ich kam auf diese Lösung, gibt's bessere Ideen?

Delphi-Quellcode:
SELECT knr FROM tbteilnehmer ORDER BY id_teilnehmer DESC LIMIT 100
somit erstelle dir ein INDEX auf das PK Feld als DESC index, somit muss er nicht natural laufen

Ok... und wie mache ich das?

mkinzler 8. Jan 2015 11:39

AW: Am schnellsten die letzten 100 Datensätze aus ner DB laden?
 
Indem Du einen Index auf id_teilnehmer mit absteigender Sortierung erstellst. Geht einfach im Admintool oder mit SQL Create INDEX ...

AlexII 8. Jan 2015 11:57

AW: Am schnellsten die letzten 100 Datensätze aus ner DB laden?
 
Zitat:

Zitat von mkinzler (Beitrag 1285883)
Indem Du einen Index auf id_teilnehmer mit absteigender Sortierung erstellst. Geht einfach im Admintool oder mit SQL Create INDEX ...

Das heiß, dass in meiner Abfrage erst absteigend sortiert wird und nicht vorher?

Delphi-Quellcode:
SELECT knr FROM tbteilnehmer ORDER BY id_teilnehmer DESC LIMIT 100

DeddyH 8. Jan 2015 12:07

AW: Am schnellsten die letzten 100 Datensätze aus ner DB laden?
 
Wie, "vorher"?

AlexII 8. Jan 2015 12:15

AW: Am schnellsten die letzten 100 Datensätze aus ner DB laden?
 
Zitat:

Zitat von DeddyH (Beitrag 1285887)
Wie, "vorher"?

Ich meine muss ich vorher (nach Programmstart) meine IDs mit DESC sortieren und danach

Delphi-Quellcode:
SELECT knr FROM tbteilnehmer ORDER BY id_teilnehmer DESC LIMIT 100
aufrufen? Damit die Werte vor der Abfrage schon DESC sortiert sind, oder ich lasse meine select Abfrage so wie sie jetzt ist und fertig?

mkinzler 8. Jan 2015 12:17

AW: Am schnellsten die letzten 100 Datensätze aus ner DB laden?
 
Wenn du aufsteigend sortierest, witrd der ASC INDEX verwendet und wenn du absteigend sortierst der DESC INDEX, falls vorhanden, sonst wird ein full table scan gemacht -> langsam.

DeddyH 8. Jan 2015 12:21

AW: Am schnellsten die letzten 100 Datensätze aus ner DB laden?
 
Die Daten in der Tabelle liegen in irgendeiner undefinierten Reihenfolge vor, sortiert werden kann also nur bei der Abfrage. Und danach ändert sich die Reihenfolge innerhalb der Tabelle auch nicht, wäre ja auch völliger Blödsinn, da wäre der Server ja beinahe nur noch mit Sortieren beschäftigt. Aus diesem Grund musst Du die Sortierung in Deinem Statement angeben, es gibt also kein "vorher".

[edit] Nachtrag: Und dafür gib es ja die Indizes, die sind sortiert und werden auch ggf. aktualisiert, wenn sich Daten ändern. [/edit]

AlexII 8. Jan 2015 12:23

AW: Am schnellsten die letzten 100 Datensätze aus ner DB laden?
 
Zitat:

Zitat von DeddyH (Beitrag 1285894)
Die Daten in der Tabelle liegen in irgendeiner undefinierten Reihenfolge vor, sortiert werden kann also nur bei der Abfrage. Und danach ändert sich die Reihenfolge innerhalb der Tabelle auch nicht, wäre ja auch völliger Blödsinn, da wäre der Server ja beinahe nur noch mit Sortieren beschäftigt. Aus diesem Grund musst Du die Sortierung in Deinem Statement angeben, es gibt also kein "vorher".

Aber der PK wird doch von der DB immer automatisch indexiert wurde hier gesagt... jetzt verstehe ich nix mehr. :roteyes:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:55 Uhr.
Seite 2 von 3     12 3      

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