如何优化 SQL 服务器 table 有 3.2 亿多行只有 varchar(max) 数据类型
How to optimize SQL Server table with 320 million + rows with only varchar(max) data types
我有一个 table,其中包含 3.2 亿多行和 34 列,全部为 varchar(max)
数据类型,并且没有索引。
我发现总结整个 table 非常耗时。考虑到我需要使用它的以下目的,任何人都可以建议优化它的最佳方法:
- 简单select查询
- 在几列上求和
我是否应该在我添加的连续行号列上创建一个非聚集索引?
我的 table 磁盘大小约为 185 GB 。
我正在使用
- Windows 服务器 2008 R2
- 至强处理器 2.09 x 2
- 16 GB 内存
- SQL 服务器 2008 R2
由于数据没有唯一列,所以我已经添加了一个带整数的序列,花了2天时间完成操作。
- 使用 suitable 数据类型创建新的 table。这是最重要的部分 - 为您的列定义类型。
nvarchar(max)
是最常见的类型,所以无法优化。对数字使用 int
或 bigint
,使用 nvarchar(N)
,其中 N - 最大长度。使用 bit
作为布尔值,依此类推
- 创建主键,搜索索引
- 将数据从旧的 table 复制到新的数据,部分为 10000 或 100000 行。
我有一个 table,其中包含 3.2 亿多行和 34 列,全部为 varchar(max)
数据类型,并且没有索引。
我发现总结整个 table 非常耗时。考虑到我需要使用它的以下目的,任何人都可以建议优化它的最佳方法:
- 简单select查询
- 在几列上求和
我是否应该在我添加的连续行号列上创建一个非聚集索引?
我的 table 磁盘大小约为 185 GB 。
我正在使用
- Windows 服务器 2008 R2
- 至强处理器 2.09 x 2
- 16 GB 内存
- SQL 服务器 2008 R2
由于数据没有唯一列,所以我已经添加了一个带整数的序列,花了2天时间完成操作。
- 使用 suitable 数据类型创建新的 table。这是最重要的部分 - 为您的列定义类型。
nvarchar(max)
是最常见的类型,所以无法优化。对数字使用int
或bigint
,使用nvarchar(N)
,其中 N - 最大长度。使用bit
作为布尔值,依此类推 - 创建主键,搜索索引
- 将数据从旧的 table 复制到新的数据,部分为 10000 或 100000 行。