【发布时间】:2011-05-06 11:06:02
【问题描述】:
我必须在 SQL Server 数据库表中插入 10 亿个代码。 我将为此使用 BULK INSERT。 我的问题是:我应该在插入数据之前还是之后创建索引?我需要最快的选择
【问题讨论】:
-
为什么不用 100'000 个代码对这两个选项进行基准测试?
标签: sql sql-server indexing
我必须在 SQL Server 数据库表中插入 10 亿个代码。 我将为此使用 BULK INSERT。 我的问题是:我应该在插入数据之前还是之后创建索引?我需要最快的选择
【问题讨论】:
标签: sql sql-server indexing
10 亿条记录到一个表中?哎哟。如果您正在处理该级别的数据量并且您必须在论坛上提出这个问题,那么您可能会超出您的元素。您应该在插入后创建索引,但确保在插入后更新表上的统计信息。如果统计信息不是最新的,该索引将对您不利。
【讨论】:
当插入期间表上有索引时,服务器将需要不断地重新排序/分页表以使索引保持最新。如果您删除索引,它可以只添加行而无需担心,然后在您重新创建索引时一次性构建所有索引。
了解Bulk Insert。
另请参阅:
【讨论】:
之前创建索引。 BULK INSERT 负责优化索引。
edit:这似乎只有在输入数据按索引排序时才成立。来自http://msdn.microsoft.com/en-us/library/ms188365.aspx:
ORDER ( { 列 [ ASC | DESC ] } [ ,... n])
指定数据中的数据如何 文件已排序。批量导入 如果数据可以提高性能 被导入是根据排序的 表上的聚集索引,如果 任何
【讨论】: