AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP/MySQL] Anzahl der Datensätze begrenzen
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP/MySQL] Anzahl der Datensätze begrenzen

Ein Thema von malo · begonnen am 29. Okt 2006 · letzter Beitrag vom 29. Okt 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#11

Re: [PHP/MySQL] Anzahl der Datensätze begrenzen

  Alt 29. Okt 2006, 19:21
Zitat von Matze:
Ich würde auch mittels COUNT die Anzahl der Datensätze ermitteln und anschließend ggf. ein weiteres Query mittels DELETE foo WHERE timestamp ... ausführen.
LIMIT bringt nur dann etwas, wenn du eine begranzte Anzahl an Datensätzen auslesen möchtest.
Ich habs jetzt so gemacht, und klappt auch, danke
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#12

Re: [PHP/MySQL] Anzahl der Datensätze begrenzen

  Alt 29. Okt 2006, 19:27
Ich hatte bei mir ein ähnliches problem und habe das so gelöst, dass ich gesagt habe, dass Logs, die älter als 4 Monate gelöscht werden.
Du kannst natürlich auch nach Anzahl gehen:
DELETE FROM tabelle ORDER BY timestamp LIMIT x löscht die x ältesten Logs.
Um rauszufinden wieviele du löschen willst, könntest du so vorgehen:
SELECT COUNT(*) FROM tabelle Gibt dir die Anzahl vorhandener Datensätze. Dann könntest du einfach sagen, dass maximal y Logs in der tabelle sein sollten und dann x wär dann y-COUNT(*).
Oder du könntest einfach bei jedem einfügen eines Logeintargs den ältesten löschen (mit x=1). Um dennoch zu garantieren, dass zumindest eine bestimmte Anzahl Logs in der Tabelle sind, kannst du entweder am Anfang ganz viele leere dummy-Datensätze in die Tabelle speichern, oder eine Zeitliche Begrentzung einbauen:
DELETE FROM tabelle WHERE timestamp<UNIX_TIMESTAMP()-60*60*24*30 ORDER BY timestamp LIMIT 1 Dieser Query löscht dann wieder den ältesten Eintrag. Aber nur, wenn dieser mindestens 30 Tage alt ist.

Um das ganze Performancemässig noch etwas zu tunen, kannst du bei jedem neuen Logeintrag überprüfen, welche ID dieser bekommen hat (vorausgesetzt du hast einen primary-key mit auto inkrement) und wenn dieser dann beispielsweise durch 1000 teilbar ist, dann löschst du gleich die letzten 1000 Einträge.
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  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 21:08 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