Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/02/2010, 18:10
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Rendimiento tablas con muchas columnas

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).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)