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 3 von 4     123 4      
Dejan Vu
(Gast)

n/a Beiträge
 
#21

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 15: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.033 Beiträge
 
Delphi 12 Athens
 
#22

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 16: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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

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

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 16: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
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#24

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 16:17
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
Daten löschen? In diesem Bereich wäre es vom Datenmodell wohl sinnvoller eine Flag "inaktiv" zu vergeben statt alle Daten zu löschen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 16:26
Gelöschte Kunden kann aber kein Buchprüfer mehr kontrollieren . Langsam wird es aber OT, oder?
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
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#26

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 16:29
Gelöschte Kunden kann aber kein Buchprüfer mehr kontrollieren . Langsam wird es aber OT, oder?
Ich habe nicht damit angefangen

Aber ich denke es ist alles relevante gesagt.
Oder gibt’s noch Fragen Hauser - äh - AlexII?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
AlexII

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

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 17:14
Oder gibt’s noch Fragen Hauser - äh - AlexII?
Bin jetzt bei dieser Lösung geblieben:

SELECT knr FROM tbteilnehmer WHERE id_teilnehmer=(SELECT MAX(id_teilnehmer) FROM tbteilnehmer)

Aber wie vermeide ich, dass ein neuer Kunde die letzte gelöschte KNr bekommt?
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 17:30
Willst Du wirklich Kunden löschen können? Lies doch #24 noch einmal durch, das erscheint mir persönlich die vernünftigere Lösung zu sein.
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
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#29

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 18:09
Oder andersweitig die schon vergebenen Nummern merken.
Auch wenns hier nicht mehr geht. Für solche Unique-IDs verwenden wir bei uns GUIDs. Immer eindeutig und wenn es eh nur einer DB-System interne Nummer darstellt stört es nicht das sie nicht sprechend lesbar sind
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#30

AW: Die letzte Zeile aus der DB schnell auslesen?

  Alt 6. Jan 2015, 18:18
Daten löschen? In diesem Bereich wäre es vom Datenmodell wohl sinnvoller eine Flag "inaktiv" zu vergeben statt alle Daten zu löschen.
In diesem Bereich muss man eventuell auch das BDSG beachten und gegebenenfalls doch löschen.
Michael Justin

Geändert von mjustin ( 6. Jan 2015 um 18:27 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 03:47 Uhr.
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