Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy kolumny char / varchar / text / longtext w MySQL zajmują pełny rozmiar w systemie plików, nawet dla częściowo wypełnionych komórek?

Sprawdź http://dev.mysql.com /doc/refman/5.7/en/string-type-overview.html

Zasadniczo wszystkie te typy z wyjątkiem CHAR mają zmienną długość.

Na przykład, jeśli masz VARCHAR(72) i piszesz abcd w nim zapiszesz 5 bajtów. 4 bajty na każdy znak i 1-bajtowy prefiks do przechowywania długości ciągu (czyli 4).

Jeśli długość ciągu wynosi ponad 255 znaków, prefiks VARCHAR będzie miał 2 bajty. Więc VARCHAR(300) z zapisanym w nim 256-znakowym ciągiem zajmie 258 bajtów.

TINYTEXT ma zawsze 1-bajtowy prefiks, ponieważ można w nim przechowywać tylko 255 znaków, więc abcd zajmie 5 bajtów.

TEXT ma 2-bajtowy prefiks, więc abcd będzie 6 bajtów.

LONGTEXT ma 4-bajtowy prefiks, więc abcd będzie 8 bajtów.

Wreszcie jest prawie bezużyteczny CHAR rodzaj. CHAR(72) zawsze zajmie 72 bajty bez względu na to, co w nim przechowujesz. Jest to naprawdę przydatne tylko w przypadku bardzo krótkich pól, w których zawsze jest dokładnie taka sama liczba znaków w polu. Jak Y lub N byłby dobry CHAR(1) kandydat.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy istnieje odpowiednik MySQL dla PostgreSQL array_to_string?

  2. Wartość zewnętrznej kolumny wyboru w połączonym podzapytaniu?

  3. Interfejs zapytań w Railsach, gdzie występuje problem z klauzulą?

  4. Jak wdrożyć Percona Server dla MySQL w celu zapewnienia wysokiej dostępności

  5. WSTAW wiele rekordów za pomocą aktywnego rekordu ruby ​​on rails