【问题标题】:T-SQL: SELECT INTO sparse table?T-SQL:SELECT INTO 稀疏表?
【发布时间】:2026-01-11 13:05:02
【问题描述】:

我正在将大量空表迁移到 SQL Server 2008。

这些表是一个大逻辑表的垂直分区。

问题是这个逻辑表有超过 1024 列。

鉴于大部分字段为空,我打算使用稀疏表。

到目前为止,对于我所有的表,我一直在使用 SELECT...INTO,效果非常好。

但是,现在我有“CREATE TABLE 失败,因为表 'MyBigTable' 中的列 'xyz' 超过了 1024 列的最大值。”

我有什么办法可以做 SELECT...INTO 以便它创建具有稀疏支持的新表?

【问题讨论】:

    标签: tsql sql-server-2008 sparse-matrix select-into


    【解决方案1】:

    您可能想要做的是手动创建表并使用INSERT ... SELECT 语句填充它。

    要创建表,我建议编写不同的组件表并合并它们的定义,并根据需要将它们全部设为SPARSE。然后运行您的单个 CREATE TABLE 语句。

    【讨论】:

      【解决方案2】:

      您不能(而且可能无论如何也不想这样做)。有关 MSDN 文档,请参阅 INTO Clause (TSQL)

      问题在于稀疏表是物理存储特性而不是逻辑特性,因此 DBMS 引擎无法知道复制该特性。此外,它是一个表范围的属性,并且 SELECT 可以有多个基础源表。请参阅我链接的页面的备注部分,其中讨论了如何仅使用默认组织详细信息。

      【讨论】: