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