sql >> Base de Datos >  >> RDS >> Mysql

¿Es más eficiente separar datos relacionados grandes y pequeños en la columna de una tabla SQL?

VARCHAR se almacena en línea con la tabla. VARCHAR es más rápido cuando el tamaño es razonable, cuya compensación sería más rápida depende de sus datos y su hardware, le gustaría comparar un escenario del mundo real con sus datos.

El número máximo efectivo de bytes que se pueden almacenar en un VARCHAR o VARBINARY la columna está sujeta al tamaño máximo de fila de 65,535 bytes , que se comparte entre todas las columnas.

Por ejemplo, un VARCHAR(255) La columna puede contener una cadena con una longitud máxima de 255 caracteres. Suponiendo que la columna usa el conjunto de caracteres latin1 (un byte por carácter), el almacenamiento real requerido es la longitud de la cadena (L), más un byte para registrar la longitud de la cadena. Para la cadena 'abcd' , L es 4 y el requisito de almacenamiento es de cinco bytes. Si se declara la misma columna para usar ucs2 conjunto de caracteres de doble byte, el requisito de almacenamiento es de 10 bytes:la longitud de 'abcd' es de ocho bytes y la columna requiere dos bytes para almacenar longitudes porque la longitud máxima es superior a 255 (hasta 510 bytes ).

Para datos más grandes, considere usar TEXT o BLOB . TEXT y BLOB las columnas se implementan de manera diferente en el NDB motor de almacenamiento, en el que cada fila en un TEXT columna se compone de dos partes separadas. Uno de estos es de tamaño fijo (256 bytes) , y en realidad se almacena en la tabla original. El otro consta de cualquier dato que supere los 256 bytes , que se almacena en una tabla oculta. Las filas de esta segunda tabla son siempre 2,000 bytes largo. Esto significa que el tamaño de un TEXT la columna es 256 si size <= 256 (donde tamaño representa el tamaño de la fila); de lo contrario, el tamaño es 256 + size + (2000 – (size – 256) % 2000) .

http://dev.mysql.com/doc/refman /5.6/en/storage-requirements.html

Depende de la relación de su base de datos, si rara vez usa esos campos en la consulta. Por ejemplo para información adicional. Crear una tabla separada es una buena opción (normalizar).

NOTAS: VARCHAR es diferente con CHAR . Si crea VARCHAR(250) e inserte solo 20 caracteres en él, entonces tomará 5 bytes + L diferente con CHAR(250) , tomará 250 bytes + L para la misma condición.