gpt4 book ai didi

sql-server - 具有小数据的 varchar(max) 列的开销

转载 作者:行者123 更新时间:2023-12-02 07:26:10 25 4
gpt4 key购买 nike

作为来自外部源的批量数据加载的一部分,暂存表是使用 varchar(max) 列定义的。这个想法是,每一列都能够保存在源 CSV 文件中找到的任何内容,并且我们稍后将验证数据(类型、大小、精度等)。

但我担心 varchar(max) 列对于少于 200 个字符的列会产生大量开销。设计这个的人向我保证这是 ETL 的最佳实践,但我想我会与社区一起验证这一说法。

最佳答案

如果空间允许,VARCHAR(MAX) 列值将存储在表行中。因此,如果您有一个 VARCHAR(MAX) 字段,并且它的大小为 200、300 字节,那么它很可能会与其余数据一起内联存储。这里没有问题或额外的开销。

只有当单行的全部数据无法再容纳在单个 SQL Server 页 (8K) 中时,SQL Server 才会将 VARCHAR(MAX) 数据移动到溢出页中。

总而言之,我认为您可以两全其美 - 可能时使用内联存储,必要时使用溢出存储。

马克

PS:正如 Mitch 指出的那样,可以关闭此默认行为 - 然而,我没有看到任何令人信服的理由这样做......

关于sql-server - 具有小数据的 varchar(max) 列的开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/858245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com