2011-01-17 2 views
0

Ich habe eine beliebige Anzahl von Benutzern in einer Datenbank (dies könnte 100, 2000 oder 3 sein) was ich tue ist mit mysql "show tables" und Speichern der Tabellennamen in einem Array, dann führe ich eine while-Schleife aus und nehme jeden Tabellennamen (den Namen des Benutzers) und füge ihn in einen Code ein, dann führe ich diesen Code für jeden Tabellennamen aus. Bei 3 Benutzern dauert dieses Skript ungefähr 20 Sekunden. Es verwendet die Twitter-API und führt einige mysql-Einfügungen durch. Ist dies der effizienteste Weg dies zu tun oder nicht?Der effizienteste Weg, um dies PHP-Skript zu tun

+0

So bekommt jeder Benutzer seine eigene Tabelle? – ndtreviv

+0

Ja, ist das nicht richtig? Ich wollte nicht die Benutzer innerhalb einer Tabelle vermischen – benhowdle89

+0

Warum haben Sie eine separate Tabelle für jeden Benutzer? Liegt das an Twitter? Ihr Vertreter schlägt vor, dass Sie ein solches System wahrscheinlich nicht selbst entwerfen würden. – Tesserex

Antwort

5

Sicher nicht!

Ich verstehe nicht, warum Sie jeden Benutzer in ihrer Tabelle speichern. Sie sollten eine users Tabelle erstellen und von dort auswählen.

Es wird in 0,0001 Sekunden ausgeführt.

Update:

Eine Tabelle hat Zeilen und Spalten. Sie können mehrere Benutzer in Zeilen und Informationen zu jedem Benutzer in Spalten speichern.

Bitte versuchen Sie einige Datenbank Design Tutorials/Bücher, sie werden Ihnen sehr helfen.

+0

Ich habe es so gemacht, weil jeder Benutzer eine Spalte namens tweet_id und tweet hat. Wie würde ich das tun, aber mit einem Tisch namens Benutzer? – benhowdle89

+0

Ich werde dies, und nur hinzufügen, in allgemeine Datenbank-Design suchen. Es mag einige andere Entwickler überraschen, aber ich habe schon vorher von anderen gehört, die diese Design-Idee entworfen haben. Ehrlich gesagt bin ich mir nicht sicher, woher diese Idee stammt, außer einem Mangel an Verständnis für die Verbindungen zwischen Tabellen, aber leider ist dies die absolut beste Antwort. Ich kann mir kein Produktionssystem auf der Welt vorstellen, das Tabellen für jeden einzelnen Benutzer erstellen würde. Es ist Wahnsinn. – cgp

0

Wenn Sie sich Gedanken darüber machen, mehrere Einträge für jeden Benutzer in derselben Benutzertabelle zu speichern, können Sie eine separate Tabelle für Tweets mit der tweet_id haben, die sich auf den Benutzer bezieht.

Ich würde sicherlich für einen Benutzer Tabelle gehen.

+0

ok das klingt gut. Ich vermute viel besser als ein Tisch für jeden – benhowdle89

0

Datenbanken sind für die Verarbeitung vieler Zeilen optimiert. Einige der verwendeten Techniken sind Indizes, physikalisches Layout von Daten auf der Festplatte und so weiter. Die Operationen auf vielen Tabellen werden immer langsamer sein - dafür wurde RDBMS nicht entwickelt.

Es gibt eine Ausnahme - manchmal optimieren Sie Datenbanken durch sharding (Partitionierung von Daten), aber dieser Ansatz hat so viele Vorteile wie Nachteile. Einer der Nachteile ist, dass Abfragen wie die von Ihnen beschriebene Zeit sehr viel Zeit in Anspruch nehmen.

Sie sollten alle Benutzer in einer Tabelle ablegen, da sie aus logischer Sicht eine Einheit darstellen.