2010-08-04 9 views
10

¿Algún punto de referencia, grafica cualquier cosa? Es todo académico y teórico en la web.¿Alguien tiene una prueba considerable de que CHAR es más rápido que VARCHAR?

Bien, no es la primera vez que se formula esta pregunta, todos dicen que el uso de CHAR resultados en selecciones más rápidas? Incluso leo en libros de MySQL, es todo lo mismo, pero no he encontrado ningún punto de referencia que lo demuestre.

¿Alguien puede arrojar algo de luz sobre esto?

+0

No es así, a menos que tenga cadenas de longitud fija, entonces char es más rápido. –

+0

Sin esperar, entonces por naturaleza CHAR no puede tener una longitud de picadura variable, ya que el resto es una parte de la cadena solamente que es solo un espacio en blanco, no creo que la parte "a menos" se aplique aquí ya que está arreglada. - –

Respuesta

5

Esto es simple lógica, para simplificar voy a tomar el ejemplo de un archivo CSV ...

habría que ser más rápido para buscar en esta línea

1231; 231; 32345; 21312; 23435552 ; 1231; 1; 243; 211; 3525321; 44343112;

o éste

12; 23; 43; 54; 56; 76; 54; 83; 45; 91; 28; 92

, siempre y cuando se define la longitud correcta CHAR debe ser más rápido como el formato predefinido ayuda al tiempo de procesamiento.

+0

Entonces, si lo que dices es cierto, no hay un aumento de velocidad real al usar CHAR a menos que, por ejemplo, una columna "fullname CHAR (20)" tenga todos los nombres completos exactamente llenos de datos relevantes para 20 caracteres. ¿Derecha? o eso sucede automáticamente porque el espacio muerto se agrega como un rastro en estas columnas? –

+0

Se agrega espacio, por lo que siempre es exactamente 20. Por eso es más rápido. –

+1

Tenga en cuenta que esto solo se aplica si TODOS los campos en la fila son de ancho fijo. – Mchl

0

Supongo que deberías levantar el guante y hacerlo.

4

El punto es que no lo es. No por sí solo de todos modos.

Sin embargo, lo que sí es cierto es que si hay solo campos de ancho fijo en la tabla, MySQL no necesita realizar algunos cálculos para conocer el comienzo de cada campo.

También puede haber una diferencia para campos muy cortos. Si compara CHAR (1) frente a VARCHAR (1), este último toma el doble de memoria que el primero (en codificaciones de un solo byte)

Cuestiones relacionadas