El problema no está tanto en la cantidad de columnas sino en
el ancho del registro.
Si tienes 50 columnas de tipo CHAR(1) en una tabla y en otra 3 columnas de tipo VARCHAR(250), la consulta
tardará menos en la primera tabla que en la segunda, simplemente porque tienes 50 bytes contra 750.
A esto le sumas que se necesitan 10 veces más bloques de TCP para enviar 20 registros de la segunda tabla que la misma cantidad de la primera. O sea:
Afecta la performance de la red.
Así, el problema que debes resolver en realidad es el impacto a nivel de consultas de los campos en otros niveles:
¿Hay índices adicionales?
¿Se necesitarán JOINS especiales para usar esos datos?
¿Implicará el uso de columnas NOT NULL?
Etc., etc.
Esas cosas sí impactan en el problema. La
cantidad de columnas
no.
Un dato final:
Si las columnas son MEDIUMINT, no ocupan 7 caracteres de ancho, sino 3, porque los números no se almacenan como caracteres sino como
binarios. Un MEDIUMINT(7) significa que el ancho máximo de representación visual será de 7 caracteres (ver
manual de referencia).