2011-01-17 6 views
0

J'ai un certain nombre d'utilisateurs dans une base de données (cela peut être 100, 2000 ou 3) ce que je fais utilise mysql "show tables" et stocker les noms de table dans un array, alors je cours une boucle while et en prenant chaque nom de table (le nom de l'utilisateur) et en l'insérant dans du code, alors j'exécute le morceau de code pour chaque nom de table. Avec 3 utilisateurs, ce script prend environ 20 secondes. Il utilise l'API Twitter et fait des insertions mysql. Est-ce la façon la plus efficace de le faire ou non?Le moyen le plus efficace de faire ce script PHP

+0

Alors, chaque utilisateur a sa propre table? – ndtreviv

+0

oui, n'est-ce pas? Je ne voulais pas mélanger les utilisateurs dans une table – benhowdle89

+0

Pourquoi avez-vous une table séparée pour chaque utilisateur? Est-ce à cause de Twitter? Votre représentant vous suggère de ne pas concevoir un tel système par vous-même. – Tesserex

Répondre

5

Certainement pas!

Je ne comprends pas pourquoi vous stockez chaque utilisateur dans leur table. Vous devez créer une table users et sélectionner à partir de là.

Il fonctionnera en 0.0001 secondes.

Mise à jour:

Une table comporte des lignes et des colonnes. Vous pouvez stocker plusieurs utilisateurs dans des lignes et des informations sur chaque utilisateur dans des colonnes.

Veuillez essayer quelques tutoriels de conception de bases de données/livres, ils vous aideront beaucoup.

+0

je l'ai fait de cette façon parce que, chaque utilisateur a une colonne appelée tweet_id et tweet. Comment est-ce que je ferais ceci mais avec une table appelée les utilisateurs ?? – benhowdle89

+0

Je vais monter cela, et juste ajouter, se pencher sur la conception générale de la base de données. Cela peut surprendre certains autres développeurs, mais j'ai déjà entendu parler d'autres personnes qui ont déjà eu cette idée de design. Honnêtement, je ne suis pas sûr d'où cette idée provient d'autre qu'un manque de compréhension entourant les jointures entre les tables, mais hélas, c'est la meilleure réponse. Je ne peux penser à aucun système de production dans le monde qui créerait des tables pour chaque utilisateur. C'est de la folie. – cgp

0

Si vous êtes préoccupé par le stockage de plusieurs entrées pour chaque utilisateur dans la même table d'utilisateurs, vous pouvez avoir une table séparée pour les tweets avec le tweet_id faisant référence à l'utilisateur.

Je choisirais certainement une table d'utilisateurs.

+0

ok ça sonne bien. Je suppose que beaucoup mieux qu'une table pour chaque – benhowdle89

0

Les bases de données sont optimisées pour le traitement de nombreuses lignes; certaines des techniques utilisées sont des index, la disposition physique des données sur disque et ainsi de suite. Les opérations sur de nombreuses tables seront toujours plus lentes - ce n'est pas ce que RDBMS a été conçu pour faire.

Il existe une exception: parfois, vous optimisez les bases de données en partitionnant (partitionnement de données), mais cette approche présente autant d'avantages que d'inconvénients. L'un des inconvénients est que les requêtes comme celle que vous avez décrite prennent beaucoup de temps.

Vous devez placer tous vos utilisateurs dans une table, car, du point de vue logique, ils représentent une entité.

Questions connexes