STRING
хранит данные переменной длины и является (по сути, за исключением некоторых практических ограничений, конечно) неограниченным.
VARCHAR(x)
хранит данные переменной длины с верхней границей x символов, поэтому данные будут усечены до определенной длины. Например, если у вас есть VARCHAR(10)
, ваши входные данные могут иметь размер в [0,10].
CHAR(x)
— это тип данных с фиксированным размером x-символов. Данные дополняются, если они короче x. Данные усекаются, если они длиннее x.
И VARCHAR
, и CHAR
были представлены в Impala 2.0.0 (CDH 5.2.0) и в основном полезны для совместимости с другими системами баз данных. Однако и VARCHAR
, и CHAR
не рекомендуются, за исключением некоторых особых случаев использования (с определенными устаревшими системами), поскольку оба имеют некоторые функциональные ограничения.
Хотя между STRING
и VARCHAR
должна быть одинаковая производительность, CHAR
имеет некоторые другие характеристики: в частности, он не сгенерирован кодом, поэтому, как правило, производительность будет страдать. Однако небольшие CHAR
s (где x < 128
) сохраняются вместе с кортежами во время выполнения, а не во вспомогательной памяти, как данные переменной длины.
Выше приведены некоторые различия между этими типами, но по возможности рекомендуется использовать STRING
.
См. STRING, VARCHAR и < href="http://www.cloudera.com/content/cloudera/en/documentation/cloudera-impala/latest/topics/impala_char.html" rel="nofollow noreferrer">CHAR для получения более подробной информации. .
person
Matt
schedule
02.04.2015