将索引添加到大表

时间:2013-06-25 13:56:50

标签: sql indexing sql-server-2008-r2

我在SQL Server 2008 R2中有一个大表(大约40个记录),它有很高的流量(不断增长,选择和编辑......)

到目前为止,我通过id(简单身份密钥)访问此表中的行,我有一个列叫它GUID,这对于大多数行都是唯一的,但有些行具有该列的相同值。

GUID列为nvarchar(max),该表包含大约10个键和约束,仅在简单身份键列上进行索引。

我想在此列上设置索引,而不会导致任何崩溃或使表不可用。

我该怎么办?

请注意,这是一张流量大的大型桌子,必须保持在线状态

由于

1 个答案:

答案 0 :(得分:5)

嗯,这个问题的答案很简单(但你可能不喜欢):你做不到。

SQL Server要求索引键小于800字节。它还要求密钥始终“存储在行中”。由于NVARCHAR(MAX)列可以显着增大到800字节(最多2GB),并且通常也存储在标准行数据页之外,因此SQL Server不允许索引键包含{{1} }专栏。

您拥有的一个选项是使此GUID列成为实际的NVARCHAR(MAX)数据类型(或至少是UNIQUEIDENTIFIER。仍然不建议使用索引GUID,因为它们会导致高度碎片,但至少是这样的但是,这不是一件快速而且简单的事情,如果您需要在此更改期间保持在线状态,我强烈建议您获得外界帮助。