php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.05.2005, 13:39  
CSS
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 324
CSS
Standard Eine Frage der Performance

Okay, folgendes Problem:
Mit diesem Befehl erstelle ich die Tabelle in einer SQLITE-DB
CREATE TABLE dates (id INTEGER PRIMARY KEY UNIQUE, fdate VARCHAR(10) UNIQUE, event VARCHAR(1000), sdate VARCHAR(10))

ID = Eindeutige ID
fdate = Zeitstempel mit einem Datum
sdate = Zeitstempel, ist optional (also bis)
event = Hier speichere ich reinen Text

Jetzt möchte ich aber nach Monaten sortieren können. Soll ich meine ganze DB-Struktur verändern und das Monat, Jahr und Tag in einer eigenen Spalte speichern und erst bei der Ausgabe einen Zeitstempel erstellen und mit meiner eigenen Funktion in ein deustches DAtum umändern.

oder

Einfach ein neues Feld anlegen und dort das Monat speichern?

oder ganz was anderes.

Da alles auf SQLITE fußt und zur Zeit (die DB war bereits 17MB groß ohen Performanceverlust!!) brauch ich eine recht einfach Datenbankstruktur.

MfG CSS
CSS ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.05.2005, 13:45  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wenn du die date-sachen nicht als varchar speichern würdest, könntest du auf die datums-funktionalität zurückgreifen - oder falls sqlLite nicht unterstützen sollte, zumindest mithilfe von INT sortieren.
axo ist offline  
Alt 17.05.2005, 14:03  
Gast
 
Beiträge: n/a
Standard

also ich denk das man mit nem timestamp am bequemsten arbeiten kann.....
wobei ich denk das mein vorposter das im prinzip gemint hat....
mit dem timestamp kannst du ja dann alles machen.,...
 
Alt 17.05.2005, 14:05  
CSS
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 324
CSS
Standard

@axo

Ich kann auch mit VARCHAR() ohne weiteres sortieren (ORDER BY fdate). In sdate und fdate speichere ich das vom Benutzer eingegebene Datum. Mit Timestamp geht nur das aktuelle Datum soviel ich weiß. Da ich aber einen Terminkalender habe, wird das aktuelle Datum nicht benötigt.

MfG CSS
CSS ist offline  
Alt 17.05.2005, 14:09  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

du kannst einen timestamp mit jedem beliebigen datum erzeugen.

www.php.net/mktime

mfg
robo47
robo47 ist offline  
Alt 17.05.2005, 15:26  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

jupp, siehe robo - du solltest grundsätzlich timestamps verwenden - sortierungen von integer-zahlen sind nämlich reine mathematik, strinvergleiche sind entsprechend langsam.

naja, ich persönlich würde bei 17 MB daten nicht mit sqLite arbeiten. das sei aber jetztmal ein anderes thema.
axo ist offline  
Alt 17.05.2005, 17:39  
CSS
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 324
CSS
Standard

@axo und robo

Wo liegt der Sinn wenn ich ein Datum mit mktime erzeuge und danach in ein TIMESTAMP Feld einfüge?

Jetzt erstelle ich mit mktime ein Datum und speichere es in einem VARCHAR.

Es doch komplett egal, oder? Naja, ist ja auch egal. Meine Frage hab' ich mir schon selbst gelöst.

MfG CSS
CSS ist offline  
Alt 17.05.2005, 17:43  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

nicht in ein timestamp-feld, sondern isn eins vom typ INT
robo47 ist offline  
Alt 17.05.2005, 17:53  
CSS
Erfahrener Benutzer
 
Registriert seit: 04.12.2004
Beiträge: 324
CSS
Standard

@robo47

SQLITE arbeitet intern nur mit Strings d.h. INT == STRING. TIMESTAMP == STRING. Ist doch in PHP oder JavaScript gleich, der Programmierer braucht sich nicht um die Typumwandlung, wie das noch in C/C++ nötig war kümmern.

MfG CSS
CSS ist offline  
Alt 18.05.2005, 00:26  
Gast
 
Beiträge: n/a
Standard

INT == STRING ist aber bekloppt - dann müsste man keinen Typ angeben.

INT wird intern anders gespeichert als string und INT's lassen sich meines wissens auch einfacher sortieren als strings, von daher ist es eindeutig performanter ints zu nehmen.
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
ImageMagick Performance Problem M3g4Star PHP Tipps 2006 1 30.11.2006 09:35
DNS Problem / Frage b++ Server, Hosting und Workstations 3 12.10.2006 13:27
Komplexe Funktion: +Übersichtlichkeit, -Performance Jacks Rache PHP Tipps 2006 3 07.06.2006 14:22
Performance -Frage kanti PHP Tipps 2006 8 27.04.2006 13:16
Vererbung von Klassen und Performance ggfan PHP Tipps 2006 5 05.03.2006 12:00
Frage zu Counter PHP Tipps 2006 1 17.02.2006 21:45
frage zu performance, bzw. serverbelastung bei abfrage... Promaetheus PHP Tipps 2007 8 29.12.2005 12:20
[PDO] Frage zur Portabilität freq.9 PHP-Fortgeschrittene 2 29.07.2005 13:28
Performence Frage PHP-Fortgeschrittene 10 06.05.2005 19:00
Frage zu einem Editformular PHP Tipps 2005 3 25.04.2005 14:58
Performance verbessern PHP Tipps 2005 2 17.03.2005 13:29
[Erledigt] Performance Frage Datenbanken 5 20.01.2005 11:27
[Erledigt] Frage zur Funkrionen? PHP Tipps 2004-2 10 01.12.2004 09:42
[Erledigt] PHP Performance PHP-Fortgeschrittene 11 13.09.2004 07:25
[Erledigt] Frage! PHP Tipps 2004 4 27.07.2004 11:25


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:52 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.