2012-05-10 12 views
9

Se so che un valore memorizzato in MySQL sarà sempre esattamente di 32 caratteri, è meglio eseguire le prestazioni per rendere il tipo di colonna CHAR anziché VARCHAR? Qual è esattamente la differenza di prestazioni tra l'utilizzo di VARCHAR e CHAR?MARCHQL VARCHAR o CHAR per stringa di lunghezza fissa

Grazie.

+0

correlati http://stackoverflow.com/a/34802591/934739 –

risposta

7

Vorrei utilizzare CHAR.

Se è probabile che la ricerca sulla colonna, CHAR presenta un piccolo aggiornamento delle prestazioni su VARCHAR.

Dal momento che la dimensione dei dati sta per essere fissato, non v'è alcun aspetto negativo di utilizzare CHAR, come VARCHAR equivalente memorizzerà da uno a due byte come un prefisso.

Riferimento: MySQL CHAR vs VARCHAR

3

colonne VARCHAR use a one or two byte prefix to store the length:

In contrasto CHAR, VARCHAR valori vengono memorizzati come un byte o due byte di prefisso lunghezza più dati. Il prefisso della lunghezza indica il numero di byte nel valore. Una colonna utilizza un byte di lunghezza se i valori non richiedono più di 255 byte, due byte di lunghezza se i valori possono richiedere più di 255 byte.

Quindi, una colonna VARCHAR sarà leggermente più grande. Se sai che saranno sempre esattamente 32 caratteri, allora CHAR sembra ragionevole. In quasi tutti i casi in cui non sei completamente sicuro della lunghezza, andrei con VARCHAR.

7

La risposta alla sua prima domanda, "? È meglio prestazioni per rendere il tipo di colonna CHAR invece di VARCHAR" ... è sì. Decisamente.

Se SEMPRE sapete che la lunghezza sarà 32, allora dovete assolutamente usare CHAR.

Diverse buone risposte sono stati anche qui dato: Why would I ever pick CHAR over VARCHAR in SQL?

0

Se la stringa sarà sempre di 32 caratteri (probabilmente stai avendo un hash MD5) per poi andare Char (32) è sempre possibile eseguire questo script contro ogni tavolo e vedere che cosa ha da dire mysql

SELECT * FROM table PROCEDURE ANALYSE(); 

Questo sarà analizzare le intere righe e darvi alcuni suggerimenti. Funziona bene solo se hai un numero o file decente nel tuo tavolo.

Problemi correlati