2010-03-15 7 views
1

Je suis tout nouveau à PHP & MySQL, et une fonction que je crée a besoin d'accéder à une grande table ou base de données. J'ai créé la base de données et elle est actuellement dans une table MySQL, à laquelle j'accède sans problème. La table a une longueur de 11 000 lignes et 8 colonnes (tout le texte contient moins de 8 caractères). Elle est statique et ne changera jamais. Sans être trop particulier, mes utilisateurs vont appuyer sur un bouton qui déclenchera des scripts pour accéder aux données, disons 500 fois ou plus. Donc, en général, serait-il mieux d'inclure toutes ces données dans un gros «switch» ou «if ... then» dans mes scripts, plutôt que d'ouvrir et d'accéder à la base de données des centaines, voire des milliers de fois ? Il semble juste que cela pourrait être un goulot d'étranglement en attente de se produire. Merci!Débutant PHP/MySQL question

+0

Cela ressemble à quelque chose que vous devez vous référencer? Je resterais personnellement avec la base de données pour la facilité de maintenance. – Dolph

+0

Je suis d'accord avec Dolph! : D – Shrayas

+0

J'ai la base de données qui fonctionne et je vais comparer ses performances à un tableau. Merci pour la suggestion. –

Répondre

1

Dans votre cas, je garderais la base de données mais chargerais tout le contenu dans la mémoire (tableau) au début du script. Si vous souhaitez optimiser plus tard, vous pouvez utiliser un schéma de chargement paresseux très simple, en lisant un lot de données sur les demandes. Peut-être y a-t-il des indices sur les rangées qui peuvent être demandées. Mais reste simple!

+0

Simple ... un peu comme moi! Merci pour le conseil. –

+0

Aucune transpiration. S'il vous plaît récompenser des réponses utiles en votant et choisissez l'un d'entre eux comme "la" réponse. Aussi, éditez le titre pour résumer la question afin que d'autres puissent le trouver. – Martin

1

En lisant votre question, il semble qu'il pourrait y avoir beaucoup de place pour l'amélioration informatique. Il est rare qu'une application doive faire quelque chose tant de fois sur un si grand ensemble de données.

Cependant, une chose à noter est qu'une base de données avec 11 000 lignes est, en fait, plutôt petite. La somme totale de vos données devrait être assez insignifiante (3 octets [max] * 8 caractères * 8 champs * 11 000 lignes = ~ 2 mb). Envisagez de pré-charger la base de données en mémoire avant l'exécution de votre programme et utilisez-la au lieu de l'accès direct à la base de données. Cela devrait fonctionner beaucoup plus vite de cette façon.

+0

Il semble que ce soit un grand nombre de fois pour accéder aux données, mais c'est une grande table de correspondance pour les objets cartographiques - pour voir quel est le nom d'objets particuliers au nord, sud, est et ouest d'un objet donné. Je vais essayer ce que vous dites sur le chargement en mémoire. Merci! –

2

Mieux vaut éliminer cet accès 500 fois. Pourquoi en avez-vous besoin? Habituellement, nous utilisons une base de données pour faire n'importe quel calcul avec une seule requête

+0

vrai. Je suggérerais ceci. – Shrayas