Что является более эффективным для строки из одного или двух символов: CHAR (2) или VARCHAR (2)? - PullRequest
14 голосов
/ 13 апреля 2011

Действительно быстрый способ - более эффективно хранить данные, которые могут быть одним или двумя символами, как CHAR (2) или VARCHAR (2) в MySql?

Спасибо!

Ответы [ 4 ]

20 голосов
/ 13 апреля 2011

С точки зрения требуемого пространства хранения лучше использовать CHAR (2), поскольку тип VARCHAR (2) потребует один дополнительный байт для хранения длины:

Value   CHAR(2)  Storage Required  VARCHAR(2)  Storage Required
''      '  '     2 bytes           ''          1 byte          
'a'     'a '     2 bytes           'a'         2 bytes         
'ab'    'ab'     2 bytes           'ab'        3 bytes         

См. 10.4.1.Типы CHAR и VARCHAR для более подробной информации.

Дополнительная информация: В чем разница между VARCHAR и CHAR?

5 голосов
/ 13 апреля 2011

С точки зрения пространства, CHAR (2) лучше. Смотрите это: http://dev.mysql.com/doc/refman/5.0/en/char.html

Если вам больше нравится CHAR (100) против VARCHAR (100), то лучше использовать пространство, зависит от имеющихся у вас данных.

В любом случае, с точки зрения эффективности запросов, всегда полезно иметь записи фиксированной длины, когда вы можете их иметь (база данных может лучше оптимизироваться для столбцов фиксированной длины).

Таким образом, CHAR (2) выглядит как победа над VARCHAR (2) с точки зрения пространства и времени.

0 голосов
/ 13 апреля 2011

В хранилище VARCHAR(255) достаточно умен, чтобы хранить только нужную вам длину в данном ряду, в отличие от CHAR(255), который всегда будет хранить 255 символов.

0 голосов
/ 13 апреля 2011

Я хотел бы спросить, однако, стоит ли разница в эффективности между varchar и char? Похоже, что прирост производительности в лучшем случае будет незначительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...