Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/03/2009, 11:37
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: Longitudes máximas de filas

El tema lo debes analizar en dos opticas:
- A nivel de la base de datos y el modelo de datos, debes establecer cuál es la longitud máxima que el dato usará. De nada sirve ponerle VARCHAR (500) a un campo que guardará el nombre de una persona. ¿Conoces muchas personas cuyo nombre tenga 500 letras de longiitud?
- También se debe considerar que antes que guardar el valor completo de algo repetitivo, como por ejemplo los nombres de cargos de una empresa, es mejor guardarlos en una tabla CARGOS y en la de empleados poner el código numérico del cargo... Que inclusive no debería ser un INTEGER (4 bytes), sino un SMALLINT (1 byte), considerando que es difícil que una empresa existan 2555 cargos de diferente nombre...
- Todas estas consideraciones afectan la performance de una BB.DD., porque cada registro es 1 x bytes de todos los campos. Si has declarado campos por valor de 4000 bytes, cada registro aumentará en 4 K el tamaño de la tabla, además de los índices definidos sobre ella. Imaginate eso en un registro de ventas, donde cada registro fuese un renglón de la factura. 100 facturas x 10 renglones x 4K... Alrededor de 4Mb por talonario.
- Además de eso, debes considerar que estarás trabajando en Web, por lo que los datos viajan por medio del protocolo TCP/IP, por lo cual, a medida que sea mayor la longitud de bytes transmitidos, mayor será la fragmentación de los datagramas en la red, y por lo tanto más lenta la transmisión. Esto más allá de lo rápida que son actualmente las redes de datos.
- Esto último es importante por el vicio de los usuarios de usar "SELECT * ..." en vez de determinar qué campos realmente van a usar, de modo que al final saturan la transmisión de datos con todo el contenido de la tabla, innecesariamente.

Sintetizando:
1. Averigua qué longitud máxima real tienen los datos que vas a guardar. No los hagas más grandes, y tampoco más chicos.
2. Usa inteligentemente los campos numéricos UNSIGNED . Si el valor no tendrá negativos, usalos UNSIGNED.
3. Normaliza las tablas lo más que puedas, ayudará a reducir el tamaño de los registros.
4. Verifica si los índices son realmente necesarios. Muchas veces se definen índices que carecen de utilidad y bajan la performance.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)