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

Как MySQL интерпретира размера на полето VARCHAR?

A VARCHAR(255) може да съхранява до 255 знака, независимо от броя байтове на знак, изискван от кодирането на набора от знаци.

Изискването за съхранение е дължината на действително съхранените данни (не максималната), плюс 1 или 2 байта за съхраняване на дължината на данните -- 1 байт се използва, освен ако максималната възможна дължина в байтове е> 255... така че VARCHAR(255) COLLATE utf8mb4 използва 2 байта за съхраняване на дължината, докато VARCHAR(255) COLLATE ascii_general_ci използва 1 байт за съхраняване на дължината. Всяка колона може да съхранява не повече от 255 знака.

Декларирайте размера на колоната като подходящ за данните, които се съхраняват. Използването на 255 е обичайно, но обикновено е червен флаг за небрежен дизайн, тъй като рядко тази конкретна стойност представлява смислено максималната подходяща дължина на колона.

За разлика от това, CHAR(255) COLLATE utf8mb4 винаги консумира 255 × 4 (максимално възможните) байта на колона на ред и 0 байта за съхраняване на дължината, тъй като съхранената дължина не се променя. Тези колони рядко са подходящи, освен когато колоната винаги е с известна дължина и наборът от знаци е еднобайтов, като например UUID, което би било CHAR(36) COLLATE ascii_general_ci .

https:/ /dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-strings



  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. Проблем с събирането, възможно ли е да се понижи/преобразува от utf8mb4_unicode_ci в utf8_general_ci?

  3. ODBC 5.1 низ за връзка за MySQL с достъп само за четене

  4. PHP PDO::lastInsertId() връща 0

  5. Излезте от MySQL скрипта, ако базата данни съществува