производительность между varchar (1) и char (1) - PullRequest
10 голосов
/ 30 июля 2010

Есть ли разница в производительности между varchar(1) и char(1)? Какие СУБД по-разному обрабатывают эти два типа данных и размеры?

Ответы [ 6 ]

7 голосов
/ 03 декабря 2014

В MS SQL VARCHAR (1) использует ТРИ байта памяти, а CHAR (1) использует один байт памяти.

CHAR (1) более эффективен, чем VARCHAR (1) при обработке и хранении.

Точка 'безубыточности' на VARCHAR будет больше, чем 3 символа, если использовать данные переменной длины.

Если используется фиксированная длина, то CHAR всегда эффективнее на два байта.

REF: http://msdn.microsoft.com/en-gb/library/ms176089.aspx

4 голосов
/ 30 июля 2010

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

Это помогает разделить усилия по проектированию на два уровня: логический дизайн и физический дизайн.усилия ориентированы на производительность на втором этапе, физическое проектирование.

В логическом дизайне гибкость превосходит производительность.За исключением случаев, когда это не так.

2 голосов
/ 30 июля 2010

Что касается Oracle ...

CHAR (2) всегда будет использовать два байта / символа памяти. VARCHAR2 (2) может использовать только один. Таким образом, общий случай - использовать VARCHAR2 вместо CHAR.

На практике вы не должны видеть разницу в производительности для столбца из одного символа.

Поскольку CHAR никогда не приносит пользы, я всегда использую VARCHAR2.

1 голос
/ 02 ноября 2017

Для Oracle

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

Ссылка: https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2668391900346844476

1 голос
/ 30 июля 2010

это вряд ли имеет значение, так как вы используете 1 байт в обоих случаях.

но если коротко, varchar - это переменный размер, а char - фиксированный размер в больших количествах это может повлиять на пространство хранения и повлиять на время вычислений.

производительность, используйте char, если данные будут фиксированной длины. если вы гибки с различной длиной ваших данных, тогда используйте varchar.

0 голосов
/ 27 августа 2013

Мое понимание после прочтения MySQL описания VARCHAR и CHAR состоит в том, что если ваши данные всегда будут иметь одинаковую длину, то CHAR потенциально может сохранить вам один байт данных, поскольку VARCHAR требует хранения байта отдельно отфактические данные для записи, как долго эти данные.Однако, если ваши данные не имеют постоянной длины, и вы думаете о соображениях относительно пространства, имеет смысл использовать VARCHAR, потому что CHAR всегда будет использовать байт для каждого бита объявленной длины, независимо от того, есть ли что-либо в этом пространстве.

В конце концов, это, вероятно, не имеет большого значения, так как объем данных довольно мал.

Вот где я получил свою информацию: http://dev.mysql.com/doc/refman/5.0/en/char.html Если вы перейдете по ссылке, обратите особое внимание на небольшую диаграмму, поскольку в ней приведены примеры того, как данные будут обрабатываться с помощью VARCHAR и CHAR.

...