Sql 黑斑羚数据类型
我试图理解黑斑羚中以下数据之间的差异Sql 黑斑羚数据类型,sql,impala,Sql,Impala,我试图理解黑斑羚中以下数据之间的差异 串 煤焦 瓦尔查尔 在读取模式时,需要3种不同的类型。我想知道,在我们知道列长度上限的情况下,在字符串上使用Char/Varchars是否有任何性能优势?STRING存储可变长度的数据,并且(基本上——当然,除非有一些实际限制)是无边界的 VARCHAR(x)存储具有x个字符上限的可变长度数据,因此数据将被截断为定义的长度。例如,如果有VARCHAR(10),则输入数据的大小可以为[0,10] CHAR(x)是一种x字符固定大小的数据类型。如果数据小于x,则
在读取模式时,需要3种不同的类型。我想知道,在我们知道列长度上限的情况下,在字符串上使用Char/Varchars是否有任何性能优势?
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
有关更多详细信息,请参阅和文档。
字符串
存储可变长度的数据,并且(本质上——当然,除非有一些实际限制)是无限制的
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
有关更多详细信息,请参阅和文档。Matt感谢您的回复。如果我正确理解这一点,那么使用String vs VARCHAR(x)会更有意义,即使我们知道上界以便于模式演化。在Impala中定义这些类型是出于兼容性的原因,还是在任何特定情况下,1比其他类型更有意义。我真的很想看到一个文档,解释什么时候使用每种数据类型以及为什么使用。是的,由于模式演变的原因,字符串应该更容易使用。VARCHAR在与使用VARCHAR类型的其他或遗留数据库系统的代码兼容方面非常有用。Matt感谢您的回复。如果我正确理解这一点,那么使用String vs VARCHAR(x)会更有意义,即使我们知道上界以便于模式演化。在Impala中定义这些类型是出于兼容性的原因,还是在任何特定情况下,1比其他类型更有意义。我真的很想看到一个文档,解释什么时候使用每种数据类型以及为什么使用。是的,由于模式演变的原因,字符串应该更容易使用。VARCHAR在与使用VARCHAR类型的其他或遗留数据库系统的代码兼容方面最为有用。