AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken FreePascal Die letzte Zeile aus der DB schnell auslesen?
Thema durchsuchen
Ansicht
Themen-Optionen

Die letzte Zeile aus der DB schnell auslesen?

Ein Thema von AlexII · begonnen am 6. Jan 2015 · letzter Beitrag vom 7. Jan 2015
Antwort Antwort
Seite 2 von 2     12   
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 13:57
select max(knr) from tbteilnehmer Group by teilnehmer-id gar nicht so falsch.
Da macht SQLite irgendwie nicht mit... wahrscheinlich weil knr keinen Index hat.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!

Geändert von AlexII ( 6. Jan 2015 um 14:00 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 14:07
kann man die letzte Datenzeile aus der DB ohne einer Schleife auslesen?
Ganz alternative Lösung: in einer eigenen Tabelle immer die letzte Datenzeile speichern, sobald ein neuer Datensatz angelegt wird. Ganz ohne eine Definition, was "letzte" bedeutet, bleibt es Stochern im Nebel
Michael Justin

Geändert von mjustin ( 6. Jan 2015 um 14:10 Uhr)
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 14:19
kann man die letzte Datenzeile aus der DB ohne einer Schleife auslesen?
Ganz alternative Lösung: in einer eigenen Tabelle immer die letzte Datenzeile speichern, sobald ein neuer Datensatz angelegt wird. Ganz ohne eine Definition, was "letzte" bedeutet, bleibt es Stochern im Nebel
Muss ich wohl machen, da sonst wenn der letzte Kunde gelöscht wird, bekommt der neue seine KNr.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 14:20
Muss ich wohl machen, da sonst wenn der letzte Kunde gelöscht wird, bekommt der neue seine KNr.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#5

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 14:33
Wenn es zu dem Kunden bereits abhängige Daten gibt, wird das mit dem Löschen eh schwierig (bei entsprechender Datenstruktur).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 14:38
Obwohl die Idee mit dem 'ORDER BY DESC LIMIT' meistens echt brauchbar ist, würde ich mir bei großen Datenmengen 2x überlegen, ob ich diesen Weg gehen soll. Denn wider dem gesunden Menschenverstand (ist das grammatikalisch überhaupt korrekt ?) scheinen einige RDBMS bei der Sortierung etwaige Indexe zu ignorieren (sofern es sich nicht um den Primär/Clustered Index handelt) und rödeln ewig und drei Tage rum, bis sie das letzte Element ausspucken. Andere verwenden einen Index, aber auch nur dann, wenn er auch absteigend sortiert ist.

Ein Aggregat, wie 'SELECT MAX(ID)' ist dagegen -mit Index- schnell genug.

Im Zweifelsfall würde ich die Kandidaten durchprobieren.

Bei kleinen Datenmengen ist das aber wurscht.

Wenn es zu dem Kunden bereits abhängige Daten gibt, wird das mit dem Löschen eh schwierig (bei entsprechender Datenstruktur).
Aber auch nur dann, wenn man Foreign Keys benutzt, also Schattenparker ist.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#7

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 15:08
Um das einfach nochmal genauer aufzuzeigen

SQL-Code:
SELECT knr
FROM tbteilnehmer
ORDER BY id_teilnehmer DESC
LIMIT 1
bzw.
SQL-Code:
SELECT
  knr
FROM
  tbteilnehmer
ORDER BY
  id_teilnehmer DESC
LIMIT
  1
Da wird dann verständlicher was zusammengehört.
  • nimm alle Daten aus der Tabelle (da kein WHERE)
  • sortiere Dieses umgekehrt (DESC)
  • nimm nur das Letzte Erste (LIMIT 1) ...
Das Erste (SORT id_teilnehmer DESC) ist ja der Letzte (SORT id_teilnehmer ASC), vor der Umsortierung.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Jan 2015 um 15:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#8

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 15:09
Wenn es zu dem Kunden bereits abhängige Daten gibt, wird das mit dem Löschen eh schwierig (bei entsprechender Datenstruktur).
Aber auch nur dann, wenn man Foreign Keys benutzt, also Schattenparker ist.
Jo, wer braucht schon referentielle Integrität? Das ist eh nur wieder so ein modisches Zeugs
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:35 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-2025 by Thomas Breitkreuz