Pregunta

  

Duplicar posible:
   ¿Hay desventajas en el uso de un varchar genérica (255) para todos los campos de texto?

En MySQL puede elegir una longitud para el tipo de campo VARCHAR. Los valores posibles son 1-255.

Pero ¿cuáles son sus ventajas si se utiliza VARCHAR (255) que es el máximo lugar de VARCHAR (20)? Por lo que yo sé, el tamaño de las entradas depende sólo de la longitud real de la cadena insertada.

Tamaño (bytes) = longitud + 1

Así que si usted tiene la palabra "Ejemplo" en un campo VARCHAR (255), que tendría 8 bytes. Si lo tienes en un campo VARCHAR (20), que tendría 8 bytes, también. ¿Cuál es la diferencia?

Espero que me puedan ayudar. Gracias de antemano!

¿Fue útil?

Solución

Salida: referencia para Varchar

En resumen no hay mucha diferencia a menos que excede el tamaño de 255 en su VARCHAR que requerirá otro byte para el prefijo de longitud.

La longitud indica más de una restricción en los datos almacenados en la columna que cualquier otra cosa. Esto limita intrínsecamente el tamaño máximo de almacenamiento para la columna también. En mi humilde opinión, la longitud debe tener sentido con respecto a los datos. Si el almacenamiento de un Seguro Social que no tiene sentido para establecer la longitud de 128 a pesar de que no le cuesta nada en el almacenamiento si todo lo que en realidad es una tienda de SSN.

Otros consejos

Hay muchas razones válidas para elegir un valor menor que el máximo que no están relacionados con el rendimiento. Configuración de un tamaño ayuda a indicar el tipo de datos que el almacenamiento y también puede actuar también como una forma en el último suspiro de la validación.

Por ejemplo, si está almacenando un código postal del Reino Unido, después, sólo necesitan de 8 caracteres. Al establecer este límite de ayuda a dejar claro el tipo de datos que se está almacenando. Si ha elegido de 255 caracteres que sería sólo confundir las cosas.

No sé sobre MySQL, pero en SQL Server que le permitirá definir los campos de tal forma que el número total de bytes utilizados es mayor que el número total de bytes que realmente se pueden almacenar en un registro. Esto es algo malo. Tarde o temprano obtendrá una fila en la que se alcanza el límite y no se puede insertar los datos.

Es mucho mejor para diseñar la estructura de base de datos para tener en cuenta los límites de tamaño de fila.

Además sí, usted no quiere que la gente ponga 200 caracteres en un campo donde el valor máximo debe ser de 10. Si lo hacen, es casi siempre malos datos.

Usted dice, así que puedo acotar que a nivel de aplicación. Pero los datos no se mete en la base de datos sólo desde una sola aplicación. A veces se utilizan múltiples aplicaciones, a veces se importan datos y, a veces se fija manualmente desde la ventana de consulta (actualizar todos los registros para agregar 10% al precio, por ejemplo). Si cualquiera de estas otras fuentes de datos no conocen las reglas que pone en su aplicación, tendrá malos, datos inútiles en su base de datos. integridad de los datos debe ser aplicada a nivel de base de datos (lo que no le impide también la comprobación antes de tratar de introducir datos) o que no tiene integridad. Además de que ha sido mi experiencia que las personas que son demasiado perezosos para diseñar su base de datos a menudo son también demasiado perezoso para realmente poner los límites en la aplicación y no hay verificación de integridad de los datos en absoluto.

Tienen una palabra para bases de datos sin la integridad de los datos -. Inútil

Hay una diferencia semántica (y yo creo que esa es la única diferencia): si se intenta llenar 30 caracteres no-espaciales en varchar (20), se producirá un error, mientras que tendrá éxito para varchar (255). Por lo que es principalmente una restricción adicional.

Bueno, si quiere permitir una entrada más grande, o limitar el tamaño de entrada, tal vez.

Por ejemplo, es posible que tenga nombre apellido como VARCHAR 20, pero tal vez street_address como VARCHAR 50 desde el 20 puede no ser suficiente espacio. Al mismo tiempo, es posible que desee controlar el tamaño máximo que se puede conseguir valor.

En otras palabras, se han establecido un límite máximo de lo grande que puede ser un valor particular, en teoría, para evitar que la tabla (y potencialmente las entradas de índice / index) se vuelva demasiado grande.

Se podía utilizar CHAR que es un ancho fijo, así, pero a diferencia de VARCHAR, que puede ser más pequeño, CHAR rellena los valores (aunque esto lo convierte en el acceso SQL más rápido.

A partir de una perspectiva de rendimiento de base de datos inteligente no creo que va a haber una diferencia.

Sin embargo, creo que una gran parte de la decisión sobre la longitud de usar se reduce a lo que usted está tratando de lograr y documentar el sistema para aceptar sólo los datos que necesita.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top