Длина строки MySQL более чем вдвое больше, чем я ожидаю - PullRequest
1 голос
/ 11 июня 2011

В MySQL для таблицы в этом формате:

CREATE TABLE IF NOT EXISTS `test` (
  `field1` char(32) NOT NULL,
  `field2` smallint(5) unsigned NOT NULL,
  `field3` smallint(5) unsigned NOT NULL,
  `field4` datetime NOT NULL,
  `field5` enum('opt1','opt2','opt3','opt4','opt5') NOT NULL,
  `field6` enum('opt1','opt2','opt3','opt4','opt5','opt6') NOT NULL,
  PRIMARY KEY (`field1`),
  KEY `field5` (`field5`),
  KEY `field2` (`field2`),
  KEY `field4` (`field4`),
  KEY `field6` (`field6`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Я ожидаю, что длина строки будет 46.

  • 32 для char (32)
  • 2 для smallint (5)
  • 2 для smallint (5)
  • 8 для datetime
  • 1 для enum
  • 1 для enum

Но вместо этого длина строки составляет 111 каждый раз, когда я пытаюсь это сделать.Я не могу найти объяснения, почему это так.Я что-то не так делаю?

Ответы [ 3 ]

2 голосов
/ 11 июня 2011

Поле UTF8, равное char (32), будет использовать до 3 байтов на символ.

1 голос
/ 11 июня 2011

размер символа utf8 составляет 3 или 4 байта в mysql

0 голосов
/ 11 июня 2011

Вы не делаете что-то не так.Это нормально.

...