操作大量数据的最佳实践

时间:2010-08-13 22:48:03

标签: sql sql-server tsql etl

我需要对拥有超过2600万行的表进行大量处理:

  1. 根据所述列的数据确定每列的正确大小
  2. 识别并删除重复的行。
  3. 创建主键(自动递增ID)
  4. 创建自然键(唯一约束)
  5. 添加和删除列
  6. 请列出有关如何加快此过程的提示以及执行上述列表的顺序。

    非常感谢。

    更新:不需要担心并发用户。此外,此表上没有索引。此表是从源文件加载的。当所有的说法和完成都会有索引。

    更新:如果您使用与我列出的不同的列表,请随时提及。

    基于到目前为止的评论和我发现的工作:

    1. 从2600多万行创建行的子集。我发现500,000行效果很好。
    2. 删除不使用的列(如果有)
    3. 使用max(len())
    4. 为一次扫描中的所有列设置适当的数据类型长度
    5. 在列/列上创建一个(如果可能的唯一)聚簇索引,最终将成为自然键。
    6. 对所有行重复步骤2-4

2 个答案:

答案 0 :(得分:2)

如果要删除某些列,如果可能的话,您应该首先执行此操作。这将减少您必须为其他操作读取的数据量。

请记住,修改数据时,可能还需要修改包含数据的索引。因此,如果您计划对表进行大量更新,则删除索引通常是个好主意,然后再添加它们。

答案 1 :(得分:0)

订单:5,2,1,3,4

1:没办法:选择Max(Len(...))From ...

2:这完全取决于你认为重复的内容。

3:联机丛书中的ALTER TABLE将告诉您如何操作。没办法加快速度,真的。

4:见3.

5:见3.