Mysql
 sql >> база данни >  >> RDS >> Mysql

Колоните char/varchar/text/longtext в MySQL заемат ли пълен размер във файловата система дори за частично запълнени клетки?

Вижте http://dev.mysql.com /doc/refman/5.7/en/string-type-overview.html

По принцип всички тези типове с изключение на CHAR са с променлива дължина.

Например, ако имате VARCHAR(72) и пишете abcd в него ще съхранявате 5 байта. 4 байта за всеки знак и 1 байтов префикс за съхраняване на дължината на низа (която е 4).

Ако дължината на низа е над 255 знака, тогава префиксът VARCHAR ще бъде 2 байта. Така че VARCHAR(300) с низ от 256 символа, съхранен в него, ще заеме 258 байта.

TINYTEXT винаги има префикс от 1 байт, защото можете да съхранявате само 255 знака в него, така че abcd ще отнеме 5 байта.

TEXT има префикс от 2 байта, така че abcd ще бъде 6 байта.

LONGTEXT има префикс от 4 байта, така че abcd ще бъде 8 байта.

И накрая, има почти безполезният CHAR Тип. A CHAR(72) винаги ще заема 72 байта, независимо какво съхранявате в него. Наистина е полезно само за супер къси полета, където винаги има точно същия брой знаци в полето. Като Y или N би било добър CHAR(1) кандидат.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-бързият метод за архивиране и възстановяване на MySQL

  2. Получаване на последния идентификатор за вмъкване за mysql след Insert

  3. Разделяне на Datetime на стойност за дата и час

  4. Mysql, съхраняващ множество стойности в една колона от друга таблица

  5. MySQL COUNT() – Вземете броя на редовете, които трябва да бъдат върнати от заявка