Mysql
 sql >> Base de données >  >> RDS >> Mysql

Grand nombre de colonnes dans la base de données MySQL

Ok, je vois votre dialemme, et en l'absence (probablement de courte durée) d'un expert en base de données, je vais vous donner mon avis.

Par souci de santé mentale, divisez vos données. Disons que vous stockez des informations sur des personnes. Vous n'avez pas besoin de 200 colonnes dans 1 table. Vous devez les diviser et avoir plusieurs colonnes dans de nombreuses tables. ex.

tblGeneralCharacteristics:
 - colEyeColor
 - colHairColor
 - colHeight
 - colWeight

tblInterests:
 - colFaveColor
 - colFaveSport

tblRelationships
 - colMother
 - colFather
 - colBrother
 - colSister

Cette façon est bien meilleure. D'un point de vue informatique, je doute que cela importe beaucoup. De toute évidence, avec chaque requête, vous récupérez moins de données, donc pour certains rapports (où vous n'aurez peut-être pas besoin d'obtenir toutes les données ou de parcourir toutes les données), cela pourrait être plus rapide (bien que si vous indexez correctement la base de données, cela devrait ce ne sera pas un problème).

Au prochain numéro. Celle du nombre d'enregistrements dans la base de données. Si 10 000 commence à devenir un peu gros, il est temps de commencer à mettre en cache.

Maintenant, en ce qui me concerne, il n'y a pas de bonne ou de mauvaise façon de mettre les données en cache. Ce dont vous avez besoin est ce dont vous avez besoin. Ainsi, par exemple, dans votre question, vous avez mentionné l'obtention de hauteurs moyennes pour le poids des enregistrements entrés entre janvier et mars 2012. Eh bien ... vous pouvez écrire un script cron qui calcule les hauteurs moyennes pour le poids de tous les enregistrements entrés ce mois-là et stocke ceci dans une autre table quelque part. Ensuite, lorsque vous venez de créer votre rapport, il vous suffit d'obtenir les valeurs de janvier, février et mars et de les faire en moyenne... c'est beaucoup plus facile. Au lieu de faire une requête de calcul sur potentiellement des milliers de lignes, vous faites une requête cron (qui n'a pas d'importance combien de temps cela prend) sur quelques centaines de lignes, puis le rapport réel n'interroge que 3 lignes.

Une autre astuce est que plus vous pouvez faire de calculs en SQL, mieux c'est. Si vous voulez faire la moyenne des champs/enregistrements, ou totaliser quelque chose, envoyez-le avec votre requête SQL. Le serveur SQL effectuera le calcul et renverra le résultat, plutôt que de vous renvoyer d'énormes quantités de données à parcourir. Je sais que ce n'est pas toujours facile/utile, mais plus vous obtenez SQL, mieux c'est.

J'espère que cela t'aides. Comme je l'ai dit, je suis sûr qu'un expert en base de données est impatient de vous donner des conseils plus judicieux. :)