2011-09-29 29 views
5

CHAR se almacena como una cadena de longitud fija, VARCHAR se almacena como una cadena de longitud variable. Puedo usar VARCHAR para almacenar una cadena de longitud fija, pero ¿por qué la gente todavía quiere usar CHAR para almacenar una cadena de longitud fija? ¿Hay algún beneficio de usar CHAR sobre VARCHAR? Si ninguno de los beneficios, ¿por qué mySQL base de datos no elimina la opción de CHAR?¿Alguna ventaja de los usos CHAR sobre VARCHAR?

+0

http://stackoverflow.com/questions/59667/why-would-i-ever-pick-char-over-varchar-in-sql –

+0

http://stackoverflow.com/questions/350195/char-vs -varchar-for-performance-in-stock-database –

+0

ops, perdón por la pregunta duplicada. Tengo la respuesta. Gracias por el enlace. – zac1987

Respuesta

5
  • VARCHAR

varchar tiendas de cadenas de caracteres de longitud variable. puede requerir menos almacenamiento que los tipos de longitud fija porque usa solo tanto espacio como necesita.

varchar también usa 1 o 2 bytes adicionales para registrar la longitud del valor. por ejemplo, varchar (10) usará hasta 11 bytes de espacio de almacenamiento. varchar ayuda al rendimiento porque ahorra espacio. sin embargo, debido a que las filas son de longitud variable, pueden crecer al actualizarlas, lo que puede causar un trabajo adicional. si una fila crece y ya no cabe en su ubicación original, el comportamiento es dependiente del motor de almacenamiento ...

  • CHAR

carbón es de longitud fija, MySQL siempre asigna suficiente espacio para la especificada número de caracteres. Al almacenar un valor CHAR, MySQL elimina cualquier espacio final. Los valores se rellenan con espacios según sea necesario para las comparaciones.

char es útil si desea almacenar cadenas muy cortas, o si todos los valores son casi de la misma longitud. Por ejemplo, CHAR es una buena opción para valores de MD5 para contraseñas de usuario, , que siempre tienen la misma longitud.

char también es mejor que VARCHAR para los datos que se cambian con frecuencia, porque una fila de longitud fija no es propensa a la fragmentación.

+0

Ahora veo el beneficio de CHAR sobre el valor de actualización frecuente. Muchas gracias. – zac1987

+0

Nota: No diría que Char es una buena opción para hashes MD5, o cualquier hash realmente. Deben almacenarse en formato binario en lugar de una codificación diferente como es hexadecimal. – Luc

+0

creo que es más rápido para la búsqueda, ya que la base de datos sabe exactamente dónde ir de inmediato en lugar de tener que hacer cálculos de longitud, aunque esto podría no ser muy notable estos días –

Cuestiones relacionadas