
Juan José Calderón
PreguntaEntonces que me impide declarar todas las cadenas de texto como VARCHAR? y que simplemente se modifique por si solo?

Irwin Enrique Villalobos López
La ventaja de
VARCHAR
CHAR
CHAR
CHAR(100)
VARCHAR
VARCHAR
En cambio si tú ya conoces la longitud de la cadena (por ejemplo, en Among Us las claves para las salas siempre tienen 6 caracteres), entonces usas
CHAR
VARCHAR
CHAR
Helí Fernando Jerez Rincón
El problema esta en que las bases de datos se almacenan en bloques de memoria y de disco y no todas las bases de datos optimizan sus tipos de datos entonces si sabes de antemano el tipo de dato que necesitas es mejor usar ese tipo de dato, para que el I/O o búsqueda en disco sea eficiente porque la bd almacenará más información por bloques. Esta es una regla importante al diseñar modelos para cualquier base de datos.

Juan José Calderón
Ok, si te entiendo. Entonces el VARCHAR no se usaria tanto. Es mas fail usar CHAR y TEXT simplemente. Osea no le veo la utilidad del VARCHAR. O incluso no le veo la importancia a que haya un CHAR y un VARCHAR. Con que existiera uno de los dos, sea el que sea, funcionaria igual. No crees?

Enrique Devars
Esto tiene que ver con un concepto de la programación llamado espacio reservado de memoria. Cuando creas una variable es como si crearas una cajita virtual, dependiendo lo que vayas a guardar es el tamaño que va a tener esta caja. Al hecho de crear una variable con un tamaño definido se le llama reservar espacio de memoria.
En las bases de datos nosotros al definir un tipo de dato, definimos el tamaño de la cajita que usaremos. Imagina que defines que el campo de un una matricula de carro siempre va a medir 8 caracteres, entonces podemos usar un Char(8). Cada cajita que se cree dentro de nuestra bases de datos siempre va a medir 8 espacios.
Ahora imagina que quieres guardar un dato como un nombre, pero por error de diseño decides que vas a usar un Varchar(255). Un nombre es muy raro que pueda alcanzar 255 caracteres. Lo que pasaría en la base de datos es que si el nombre más largo que vas a ingresar supón que mide 50 caracteres, cada registro que se haga siempre va a medir 255 (del Varchar), pero tú a lo mucho solo ocupas 50, por lo cual se estarían desperdiciando 205 espacios de memoria.
Si esto lo haces cada vez que se crea un nuevo nombre, por ejemplo otro nombre que solo mide 15 caracteres, se desperdiciarían ahora 240 espacios en memoria. Si esto se hace consecutivamente habrá mucho espacio de memoria que no estás utilizando volviendo tu base de datos ineficiente.

Juan José Calderón
OK, osea entendia que de pronto en almacenamiento se vería afectado pero exactamente porque? si el VARCHAR al final si le voy a ver el tamaño solo ocupará lo mismo que un CHAR(X) del tamaño X solo que con el VAR CHAR puede ser mas grande o mas pequeño sin cambiar de variable. No se si me hago entender. Si me puedes aclarar eso gracias

Enrique Devars
Hola, recuerda que debes pensar en la eficiencia de tu base de datos, si hay cadenas de texto que solo tienen un número definido de caracteres es mejor usar Char(n), y si tienes una cadena que sea mayor a 255 caracteres debes usar Text.
Si tu base de datos llega a crecer mucho la eficiencia se verá afectada si no pensamos bien en el diseño.