php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.10.2010, 23:03  
Benutzer
 
Benutzerbild von IgelHaut
 
Registriert seit: 22.07.2008
Beiträge: 64
PHP-Kenntnisse:
Fortgeschritten
IgelHaut ist zur Zeit noch ein unbeschriebenes Blatt
Standard Leistungsoptimierung einer Freundschaftsliste

Hallo Community,
ich habe mal 'ne Frage bezüglich Leistungsoptimierungen bei Freundschaftslisten.
Welche Variante ist besser:

Variante 1
Man nimmt eine Tabelle mit zwei Feldern, ein Feld nimmt man für einen User
und das zweite für dessen Freund. Das Auslesen erfolgt dann
hauptsächlich durch MySQL mit Abfragen wie
PHP-Code:
mysql_query("SELECT `friend_id` FROM friends WHERE `user_id` = '".$user."'"); 
Code:
user_id | friend_id
      1 |          7
      7 |         1
usw...

Variante 2

Oder man nimmt ein Feld und speichert für jeden User die Freunde.
Hier erfolgt das Auslesen einmalig durch MySQL und wird hauptsächlich als
array mit PHP verarbeitet.
Code:
user_id | friends
      1 | 7, 16, usw...
      7 | 1
Ich habe beide Varianten realisiert und habe gemerkt, dass
die zweite Variante mehr Code benötigt als die erste, doch wie sieht das mit der Leistung aus?

MfG IgelHaut

Ps: Ich nutze MySQL als Datenbank.
__________________
http://igelhaut.org
IgelHaut ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 14.10.2010, 23:09  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 495
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Informiere dich über Normalisierung von Datenbanken. Deine zweite Variante ist nicht in Normalform. Zwar gibt es Fälle, in denen denormalisiert wird, das macht man aber erst wenn man nach der Normalisierung merkt, das die Performance inakzeptabel ist und andere Optimierungsmaßnahmen nicht das gewünschte Ergebnis gebracht haben. Und selbst dann ist Denormalisierung ein Notbehelf.
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

Geändert von mimomamu (14.10.2010 um 23:20 Uhr).
mimomamu ist offline   Mit Zitat antworten
Alt 14.10.2010, 23:10  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hallo,

Variante 1 ist ueblich und entspricht auch den Normalformen. Variante 2 ist Bloedsinn, da du damit eine erhebliche Anzahl an Vorteilen einbusst (Auswertungen, Verknuepfungen, etc.). Bezueglich Performance sehe ich keine Nachteile, die sind aber nicht relevant, da eine ausnormalisierte Datenbank im Regelfall erhebliche Vorteile bietet.
__________________
"Nuschel ich?" - "Was?"
Chriz ist gerade online   Mit Zitat antworten
Alt 14.10.2010, 23:12  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Variante 2 scheitert bei erreichen der maximalen Feldlänge. Außerdem ist das massenhafte Speichern von Kommata nicht der Sinn einer Datenbank

Mit Variante 1 bist du schon auf dem rechten Weg. Es reicht aber, die Beziehung nur einmal zu speichern und nicht gespiegelt ein weiteres mal. Die Query dafür ist in den letzten Tagen hier gepostet worden, musst mal suchen.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 14.10.2010, 23:24  
Benutzer
 
Benutzerbild von IgelHaut
 
Registriert seit: 22.07.2008
Beiträge: 64
PHP-Kenntnisse:
Fortgeschritten
IgelHaut ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok, vielen Dank für die schnellen Antworten :]
__________________
http://igelhaut.org
IgelHaut ist offline   Mit Zitat antworten
Antwort


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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
freundschaftsliste php, leistungsoptimierung.de, freundschaftsliste datenbank tabellen, freundschaftliste php, freundschaftslisten bei icq, user

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:38 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