Utilisez une table telle que vous êtes. MySQL peut facilement gérer des milliards ou des lignes de données. Avec de bons index, vos performances devraient également être assez bonnes.
Cela ne veut pas dire que vous ne devriez pas chercher à vous assurer que vous avez une bonne conception de table, mais vous ne devriez pas non plus vous soucier de la gestion de ce que vous pensez être probablement une charge de données - alors qu'en réalité, il s'agit probablement d'une baisse du océan d'ensembles de données.
Le nombre de colonnes ne fait vraiment pas TROP de différence, la taille des lignes peut augmenter le temps qu'il faut à un disque dur pour y accéder (d'après quelques articles que j'ai lus) mais en même temps, il faudrait avoir un VRAIMENT grande ligne pour remarquer la différence entre des milliers de requêtes.
Quant à la bonne structure, cela dépend vraiment de COMMENT vous devrez l'utiliser. Si vous allez exécuter de nombreuses fonctions d'agrégation différentes, assurez-vous d'avoir une table qui le permettra. Si vous n'avez besoin que de quelques requêtes spécifiques, il peut être judicieux de créer un tableau spécifique au rapport qui regroupe les données, par exemple une fois par jour.
Modifier : Notes sur la limite réelle du nombre de lignes :
http://dev.mysql.com/doc /refman/5.1/en/source-configuration-options.html
Le moteur de stockage MyISAM prend en charge 2^32 lignes par table, mais vous pouvez créer MySQL avec l'option --with-big-tables pour qu'il prenne en charge jusqu'à 2^64 lignes par table.
http://dev.mysql.com/doc/refman /5.1/fr/innodb-restrictions.html
Le moteur de stockage InnoDB ne semble pas avoir de limite sur le nombre de lignes, mais il a une limite sur la taille de la table de 64 téraoctets. Le nombre de lignes qui s'y intègrent dépend de la taille de chaque ligne.