Usa una mesa como estás. MySQL puede manejar fácilmente miles de millones o filas de datos. Con algunos buenos índices, su rendimiento también debería ser bastante bueno.
Eso no quiere decir que no deba asegurarse de tener un buen diseño de tabla, pero tampoco debe preocuparse por manejar lo que cree que es probablemente una gran cantidad de datos, cuando en realidad es probable una caída en el océano de conjuntos de datos.
La cantidad de columnas realmente no hace DEMASIADA diferencia, el tamaño de la fila puede aumentar el tiempo que le toma a un disco duro acceder a ellas (según algunos artículos que he leído), pero al mismo tiempo, tendría que tener un fila REALMENTE grande para notar la diferencia en miles de consultas.
En cuanto a una buena estructura, realmente depende de CÓMO necesitará usarla. Si va a realizar muchas funciones agregadas diferentes, asegúrese de tener una tabla que lo permita. Si solo necesita unas pocas consultas específicas, podría ser bueno crear una tabla específica para el informe que agregue los datos, por ejemplo, una vez al día.
Editar:Notas sobre el límite real de número de filas:
http://dev.mysql.com/doc /refman/5.1/en/source-configuration-options.html
El motor de almacenamiento MyISAM admite 2^32 filas por tabla, pero puede compilar MySQL con la opción --with-big-tables para que admita hasta 2^64 filas por tabla.
http://dev.mysql.com/doc/refman /5.1/es/innodb-restricciones.html
El motor de almacenamiento InnoDB no parece tener un límite en la cantidad de filas, pero tiene un límite en el tamaño de la tabla de 64 terabytes. Cuántas filas caben en esto depende del tamaño de cada fila.