2011-04-28 10 views
8

Normalmente establezco todos mis varchars a 255 para estar seguro. ¿Hace alguna diferencia en términos del espacio en disco o cualquier otra cosa? ¿Hay algún inconveniente en tener varcharrs/ints/otros campos más grandes de los que necesitaría en su mayoría?¿Hay alguna desventaja de dar tamaño/longitud extra a las columnas de su base de datos?

+0

posible duplicado de [importa límite formatos ¿VARCHAR?] (Http://stackoverflow.com/questions/4324872/does-varchar-size-limit-matter) –

+0

duplicados de http://stackoverflow.com/questions/ 262238/are-there-disadvantages-to-using-a-generic-varchar255-for-all-text-based-fields – Capsule

+0

posible duplicado de [Importancia de la longitud varchar en la tabla MySQL] (http://stackoverflow.com/questions/1962310/importance-of-varchar-length-in-mysql-table) – wallyk

Respuesta

4

se necesita más tiempo y más transferencias de disco para cargar elementos de datos más grandes en la memoria. La definición de tamaños máximos grandes para columnas aumenta el tamaño de las filas de la tabla. Para muchos servidores DBMS, las filas de la tabla son los elementos transferidos. Definir columnas demasiado gordas hace que las cosas vayan más despacio.

Este efecto es mínimo para VARCHAR artículos. Pero VARCHAR es bastante más lento que los tipos de datos como los enteros. Los enteros de ocho bytes tardan cuatro veces más en transferirse que los enteros de dos bytes. Por lo tanto, si se está diseñando una base de datos para un rendimiento máximo, limitar las columnas de datos al rango realmente requerido acelerará las cosas. La extensión de este efecto depende de si el canal del disco es un cuello de botella o no.

Otra posible cuello de botella es el canal que une el servidor con el cliente, a menudo un canal de la red. El cuello de botella en este canal se puede reducir con consultas que no solicitan datos que nunca se usarán, pero aquí hay una solución entre pedir datos solo cuando los necesita y hacer demasiados viajes redondos.

También hay un compromiso entre el diseño para un rendimiento óptimo y sobre el diseño de la anticipación de la evolución de las necesidades.

1

Con espacio en disco tan barato como lo es, que tienden a no ser tan preocupado por esto como lo era hace años. Sin embargo, pequeñas cosas se suman en VLDB.

+1

El espacio en disco es barato pero la memoria RAM no. De acuerdo con http://stackoverflow.com/questions/262238/are-there-disadvantages-to-using-a-generic-varchar255-for-all-text-based-fields esto tiene un gran impacto en las tablas temporales que ganaron ' ya no cabe en la memoria -> se crean archivos temporales y se reduce el rendimiento de la consulta. – Capsule

+0

Buen punto, de nuevo.Esto no importará mucho para una base de datos que tenga unos cientos de MB. Pero mi punto sobre la escalabilidad es general para todos los recursos, cuando hablamos de millones de registros y TB, entonces cada pequeño 'bit' ayuda. (perdón por el juego de palabras) –

3

No, eso no afecta el espacio en disco. Si eligió cualquier columna para varchar, tendrá una longitud variable de 0 a 65535. si la declara 255 o 65535, ambas son iguales.

si necesita sólo 255 caracteres que debe declararlos como char de modo que si no hay una columna de longitud variable en la tabla de las consultas será rápido.

+1

De acuerdo con esto, hace una diferencia en las consultas: http: //stackoverflow.com/questions/1151667/what-are-the-optimum-varchar-sizes-for-mysql – Mikecito

5

Si permite 255 caracteres, alguien puede usar 255 caracteres. Y así, cada informe y pantalla de ingreso de datos en línea debe poder manejar 255 caracteres. Sucio.

Tengo un ejemplo del mundo real: en nuestro sistema que alguien decidió que los nombres de departamento podrían ser de 200 caracteres de largo. Cuando alguien aportaba un valor bastante largo, arruinaba el diseño de varias formas HTML, alejando otros campos del lado derecho y haciéndolos inaccesibles. Por lo tanto se requiere algún trabajo de reparación ...

+1

Tiene más problema que intentarlo para dictar cuántos caracteres debería tener el nombre de alguien –

+0

Creo que hay un término medio aquí donde modela el tamaño de la columna a los datos realistas máximos. P.ej. ¿Con qué nombres se encuentra para su tipo de datos que se acercaría y mucho menos superaría los 60 caracteres? "El instituto de lo ridículamente largo llamado thing-a-ma-bobbers" ... vale, tal vez ... pero 200 es mucho más de lo necesario el 99.999% del tiempo. – scunliffe

Cuestiones relacionadas