2011-09-29 15 views
5

CHAR jest przechowywany jako ciąg o stałej długości, VARCHAR jest przechowywany jako ciąg o zmiennej długości. Mogę użyć VARCHAR do przechowywania łańcucha o stałej długości, ale dlaczego ludzie nadal chcą używać CHAR do przechowywania łańcucha o stałej długości? Czy jest jakaś korzyść z używania CHAR zamiast VARCHAR? Jeśli żadna z korzyści, dlaczego baza danych mySQL nie usuwa opcji CHAR?Jakieś korzyści z używania CHAR nad VARCHAR?

+0

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

+0

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

+0

ops, przepraszam za powielone pytanie. Mam odpowiedź. Dzięki za link. – zac1987

Odpowiedz

5
  • VARCHAR

varchar przechowuje zmiennej długości ciąg znaków. może wymagać mniej pamięci niż typów o stałej długości, ponieważ wykorzystuje tylko tyle miejsca, ile potrzebuje.

varchar używa również 1 lub 2 dodatkowych bajtów do zapisania długości wartości. na przykład varchar (10) użyje do 11 bajtów przestrzeni dyskowej. varchar pomaga wydajności, ponieważ oszczędza miejsce. jednak ponieważ wiersze mają zmienną długość, mogą się rozwijać, gdy je zaktualizujesz, co może spowodować dodatkową pracę. jeżeli rząd rośnie i już nie pasuje w jego oryginalnej lokalizacji, zachowanie jest zależna od silnika do przechowywania ...

  • CHAR

char jest stałej długości, mysql zawsze przydziela wystarczająco dużo miejsca dla określonego liczba znaków. Podczas przechowywania wartości CHAR, MySQL usuwa wszelkie spacje końcowe. Wartości są uzupełniane spacjami w razie potrzeby do porównań.

char jest przydatny, jeśli chcesz przechowywać bardzo krótkie ciągi lub, jeśli wszystkie wartości są prawie takie same, jak . Na przykład CHAR jest dobrym wyborem dla wartości MD5 dla haseł użytkowników, , które są zawsze tej samej długości.

char jest również lepszy niż VARCHAR dla danych, które często się zmieniają, ponieważ wiersz o stałej długości nie jest podatny na fragmentację.

+0

Teraz widzę zalety CHAR o częstej aktualizacji wartości. Dziękuję Ci bardzo. – zac1987

+0

Sidenote: Nie powiedziałbym, że char jest dobrym wyborem dla skrótów MD5, lub jakiegokolwiek skrótu. Powinny być przechowywane w formacie binarnym zamiast innego kodowania, takiego jak szesnastkowy. – Luc

+0

wierzę, że jest szybszy w wyszukiwaniu, ponieważ baza danych wie dokładnie, gdzie iść od razu, zamiast wykonywać obliczenia długości, ale obecnie może nie być zbyt zauważalna –

Powiązane problemy