2010-11-23 4 views
0

Im Moment habe ich zwei Tabellen für eine Timeline Timeline im Glossar erklärt von Posts, die ein Benutzer folgt in MySQL, Timeline und folgt.Am effizientesten Weg, um eine Abfrage von Posts zu erhalten, wenn ein Benutzer ihnen folgt

In der 'follows' Tabelle gibt es die 'follows.follow_From'-Spalte, die' follows.follow_To'-Spalten, um anzuzeigen, woher die folgenden stammen.

In der Timeline-Tabelle gibt es eine Spalte "timeline.post_From", die die Benutzer-ID des Autors für den Post enthält.

Was ist die effizienteste Methode zum Auswählen aller Posts aus 'Timeline' nur dort, wo der aktuelle Benutzer ein 'Follow' in der 'follows' Tabelle hat? Ich benutze derzeit ein MySQL-Array, aber ich sehe es nicht so effizient. Danke für das Lesen und Ihre Hilfe!

Antwort

1

Ich bin kein Experte, und es könnte nicht die effizienteste sein, aber ich würde vermuten:

  1. SELECT follow_To FROM folgt WHERE follow_From = 'user-id'
  2. SELECT * FROM Timeline WHERE timeline.post_From = (die obigen Ergebnisse)

z SELECT * FROM timeline WHERE timeline.post_From IN (SELECT follow_To FROM folgt WHERE follow_From = 'user-id')

Der umgekehrte Weg wäre definitiv langsamer, weil Sie mehr Daten verarbeiten und dann abschneiden. Schneiden Sie zuerst die Daten herunter, dann sehen Sie besser nach.

Verwandte Themen