2012-04-06 41 views
10

¿Por qué tantos desarrolladores configuran varchar a 254 y no 255 al crear tablas MySQL?MySQL: ¿por qué varchar (254) y no varchar (255)?

La prueba de que esto sucede: mysql varchar 254

+1

¡Tal vez algunos tengan miedo de ir al límite! ¡Viviendo al límite! :) –

+0

@Jason_vorhees: También he visto varchar (254) y me he preguntado cuál fue el proceso de toma de decisiones para eso. Lo escribo como "no hubo ninguno, es una mudez/negligencia arbitraria", pero estoy abierto a estar equivocado. Interesado en escuchar una respuesta a esto. – tenfour

+0

No soy forma de esos desarrolladores –

Respuesta

6

campos varchar requieren n + 1 bytes para los campos de menos de o igual a 255 y requieren n + 2 bytes para los campos de> 255

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

Se debe establecerse en 255, supongo que los desarrolladores piensan que guardarán un byte extra de 254, pero 255 es el estándar

+1

Estoy de acuerdo, estoy diciendo que 255 es correcto, no 254. Realmente no importa demasiado ahora. Cuando salió la primera DB y el espacio en el disco duro era muy limitado, sería un gran problema. – Keith

+0

Half-true: esto depende del motor de almacenamiento. Es cierto para MyIsam, no tanto para InnoDB, no se sabe de memoria para los otros motores. – Konerak

12

Su consulta de Google ya le dio las pistas. Uno de los primeros éxitos es la siguiente:

https://www.vbulletin.com/forum/project.php?issueid=32655

Básicamente dice, que FULLTEXT índices en VARCHAR(255) requieren el doble de espacio de un índice FULLTEXT VARCHAR(254). Y algo más de hinchazón además de eso.

Creo que esto es mucho más importante que guardar un byte en la tabla de datos.

+0

gud respuesta, finalmente llegué a conocer su importancia, gracias por compartirlo. –

+0

Recuerde que esto NO es motivo suficiente para usar 254 varchar en lugar de 255 varchar. Simplemente puede crear el índice para contener 254 caracteres en lugar de 255, de esta manera, su columna contiene todos los datos que necesita y su índice no se hincha. Además, este "error" realmente debería ser informado al equipo del servidor MySQL para que puedan investigar y corregir o explicar la confusión. Las capturas de pantalla de 'phpMyAdmin' en esa publicación de vbulletin no me dan mucha confianza ... – Konerak

+0

@Konerak Por favor, siéntase libre de hacer algunos experimentos por su cuenta e informar los resultados. Sin embargo: incluso si este "comportamiento" (ya sea un error o no) hubiera sido arreglado, ahora el hábito de simplemente usar el límite 254 se mantendrá por un tiempo muy largo. La gente es así. –

Cuestiones relacionadas