【发布时间】:2012-05-20 02:55:40
【问题描述】:
我昨天执行了一条更新语句,内容如下:
UPDATE MainTable
Set SomeField = SubsetTable.SomeField
where MainTable.MainTableKey = SubsetTable.MainTableKey
其中SubsetTable 是MainTable 的子集,并且具有相同的主键字段。 MainTable 大约有 200m 条记录,SubsetTable 有 5m 条记录。 MainTableKey 是一个 GUID。
这两个表在MainTableKey 上都有一个聚集索引。
当我第一次执行这个查询时,它花费了 14 个小时。
然后我在两个表上都为MainTableKey 添加了一个非聚集索引。现在需要 30 分钟。
有人知道为什么性能提升如此显着吗?
【问题讨论】:
-
您使用的是什么数据库?有关性能的问题高度依赖于数据库。
-
SQL Server 2008 R2。抱歉,刚刚更新了标签
标签: sql indexing sql-server-2008-r2 clustered-index non-clustered-index