Подтвердить что ты не робот

Что более эффективно для одной или двухсимвольной строки: CHAR (2) или VARCHAR (2)?

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

Спасибо!

4b9b3361

Ответ 1

Что касается требуемого пространства для хранения, вам лучше с 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?

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

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