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类型的其他或遗留数据库系统的代码兼容方面最为有用。