2010-11-20 16 views
0

Ich habe ähnliche Fragen zu einem komplexen Join vs mehrere Abfragen gesehen, in diesem Fall ist die Antwort immer "es kommt darauf an" haha, aber ich fragte mich, ob ich einen Einfluss auf die Richtung bekommen könnte. Hoffentlich wird es nicht zu kompliziert erklärt werden.mehrere Joins vs zwischengespeicherte einzelne Abfragen?

Ich zeige eine Seite an, die Informationen von ungefähr 3-4 verschiedenen Tabellen ziehen muss. Nehmen wir an, wir haben eine Person, die einem Club angehören könnte, und dieser Club hat viele Veranstaltungen. Ich würde Informationen aus dem Club, die Person, die Ereignisinformationen usw. ziehen müssen.

Im Moment habe ich sie in 3-4 separaten Tabellen, aber meine Ereignisse Tabelle hat eine große Anzahl von Spalten, die ich schön bin sicher ist nicht normalisiert, aber ich behalte es so, dass ich nicht mehr als 3-5 Joins max machen muss. Im Moment scheint es mit einem kleinen Datensatz in Ordnung zu sein, aber ich kann nicht umhin, mich zu fragen, ob ich sie in 3-4 individuelle Abfragen aufspalten und dann die Ergebnisse einiger von ihnen cachen würde, wäre schneller? Die Ereignistabelle wird ziemlich oft aktualisiert, so dass ich sehen kann, dass sie ungültig ist, aber die Organisation und die Benutzertabelle nicht, so dass ich sehe, dass die letztere Lösung von ihr profitiert. Also, was würdest du empfehlen?

Auch damit verbunden ist, dass meine Ereignistabelle eine große Anzahl von Spalten hat, von denen einige Daten speichern, die häufig aktualisiert werden, oder große Textspalten, um serialisierte Schlüssel-/Wertschablonendaten zu speichern. Wäre es klug, das auf eine andere Tabelle zu verteilen, also habe ich "allgemeine" Daten und dann Ereignisdaten, die häufig aktualisiert werden? Danke für jede Hilfe.

+0

Haben Sie versucht, 'EXPLAIN' zu verwenden, um ein allgemeines Gefühl dafür zu bekommen, wo der Flaschenhals ist? – stillstanding

Antwort

1

Ohne Prüfung auf Ihre speziellen Daten und Tabellen und wie häufig sie verwendet werden, gibt es keine gute Antwort.

Es sieht so aus, als ob Sie ein gutes Verständnis für die Vor- und Nachteile von jedem haben. Wenn Sie viel Platz für die Zwischenspeicherung vieler Daten haben oder wenn bestimmte Clubs von vielen verschiedenen Benutzern aufgerufen werden, werden Sie wahrscheinlich besser jedes einzelne Caching durchführen.

Wenn Sie memcached bereits eingerichtet haben, würde ich empfehlen, es einfach zu trennen und jede Abfrage zwischenzuspeichern. Es wird ein wenig mehr Arbeit in Anspruch nehmen, um die korrekten Caches zu entwerten, wenn sich die Daten ändern, aber das Caching ist eine gute Idee für die Performance, und dies wird zu einem frühen Zeitpunkt erledigt.

Ich würde mir jetzt nicht zu viele Sorgen machen. Vorzeitige Optimierung kostet Sie viel Zeit, wenn Sie andere Dinge erledigen können.

Lassen Sie es einfach funktionieren, und wenn Sie später auf Leistungsprobleme stoßen, können Sie Ihre Anwendung profilieren und sich auf die Optimierung der Bereiche konzentrieren, die sie wirklich benötigen.

+0

danke für Ihre Eingabe – Jeff