2011-09-29 12 views
5

CHAR viene memorizzato come una stringa di lunghezza fissa, VARCHAR viene memorizzato come una stringa di lunghezza variabile. Posso usare VARCHAR per memorizzare una stringa di lunghezza fissa, ma perché le persone vogliono ancora usare CHAR per memorizzare una stringa di lunghezza fissa? C'è qualche vantaggio nell'usare CHAR su VARCHAR? Se nessuno dei vantaggi, perché il database mySQL non rimuove l'opzione di CHAR?Qualunque vantaggio degli usi CHAR su 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, mi dispiace per la domanda duplicata. Ho la risposta Grazie per il link. – zac1987

risposta

5
  • VARCHAR

esercizi varchar stringa di caratteri a lunghezza variabile. può richiedere meno spazio di archiviazione rispetto ai tipi a lunghezza fissa perché utilizza solo lo spazio necessario.

varchar utilizza anche 1 o 2 byte in più per registrare la lunghezza del valore. ad esempio varchar (10) utilizzerà fino a 11 byte di spazio di archiviazione. varchar aiuta le prestazioni perché consente di risparmiare spazio. tuttavia, poiché le righe sono di lunghezza variabile, possono crescere quando si aggiornano, il che può causare un lavoro supplementare. se una riga cresce e non è più adatta nella sua posizione originale, il comportamento è immagazzinaggio dipendente dal motore ...

  • CAR

char è di lunghezza fissa, mysql alloca sempre abbastanza spazio per la specificata numero di personaggi Quando si memorizza un valore CHAR, MySQL rimuove gli spazi finali. I valori sono riempiti con gli spazi necessari per i confronti.

char è utile se si desidera memorizzare stringhe molto corte o se tutti i valori sono quasi pari a della stessa lunghezza. Ad esempio, CHAR è una buona scelta per i valori MD5 per le password utente, , che hanno sempre la stessa lunghezza.

char è anche migliore rispetto VARCHAR per dati che sono cambiati frequentemente, in quanto una riga di lunghezza fissa non è incline alla frammentazione.

+0

Ora vedo il vantaggio di CHAR in merito al valore di aggiornamento frequente. Grazie mille. – zac1987

+0

Sidenote: Non direi che char è una buona scelta per gli hash MD5, o per qualsiasi hash. Dovrebbero essere archiviati in formato binario invece di una codifica diversa come quella esadecimale. – Luc

+0

Credo che sia più veloce per la ricerca, come il database sa esattamente dove andare subito, piuttosto che dover fare calcoli di lunghezza, questo potrebbe non essere troppo evidente in questi giorni però –

Problemi correlati