0

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

到目前为止,我通过它的id(简单标识键)访问该表上的行,我有一个列让我们称之为它GUID,它对于大多数行都是唯一的,但有些行对于该列具有相同的值。

GUID列是nvarchar(max)并且该表包含大约 10 个键和约束,仅在简单标识键列上进行索引。

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

我该怎么做?

请记住,这是一个流量很大的大表,它必须保持在线且可用

谢谢

4

1 回答 1

5

好吧,这个问题的答案很简单(但你可能不会喜欢它):你不能。

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

您可以选择将此 GUID 列设置为实际UNIQUEIDENTIFIER数据类型(或至少为CHAR(32). 索引 GUID,因为它们会导致高度碎片化,但至少有可能。但是,这不是一件快速或简单的事情如果您需要在此更改期间保持联机状态,我强烈建议您寻求外部帮助。

于 2013-06-25T14:07:49.123 回答