sim*_*ing 8 sql ddl amazon-redshift
源数据不断为字段投放值,使其长度越来越大.现在我正在使用VARCHAR(200),但我可能会去VARCHAR(400).使用大量数据有什么缺点吗?
为方便起见,请不要使用最大列大小.
相反,请考虑您可能存储在VARCHAR列中的最大值,并相应地调整列的大小.由于Amazon Redshift非常有效地压缩列数据,因此创建比所需大得多的列对数据表的大小影响最小.但是,在处理复杂查询期间,可能需要将中间查询结果存储在临时表中.由于临时表未压缩,因此不必要的大型列会消耗过多的内存和临时磁盘空间,这会影响查询性能.
http://docs.aws.amazon.com/redshift/latest/dg/c_best-practices-smallest-column-size.html
你说的“缺点”是什么?如果您没有使列足够大,则会有一个非常大的缺点 - 您无法使用它来存储您想要存储在那里的值。
至于额外的开销,你不需要担心。类型varchar()基本上只占用值所需的存储空间,加上少量的长度开销。而且,“400”并不是一个很大的数字,尤其是与“200”相比。
因此,如果需要 400 字节来存储该值,请更改表来存储它。更改值的长度可能会产生开销。我不确定 RedShift 是否会因为类型发生变化而感到需要复制数据。然而,对性能的影响应该可以忽略不计。