jon*_*333 0 sql-server sql-server-2008 sql-server-2012
哪里有一个没有主键的大表,在三个字段上有唯一索引,其中两个可以为空.
有很多应用程序代码依赖于值(或非值)NULL意味着什么,所以我们必须保留列的可空值,它们是通常是主键/聚簇索引的关键列.
对于这三个字段,是否有任何可以按索引方式进行的操作?我们刚刚将数据库升级到SQL Server 2012.
即使作为可空列,行也将在这些字段中包含唯一值.
CREATE TABLE [troublesome].[table](
[AId] [int] NOT NULL,
[BNumber] [int] NULL,
[UserId] [uniqueidentifier] NULL,...
Run Code Online (Sandbox Code Playgroud)
聚簇索引可以具有可为空的键列.首先,删除唯一的非聚集索引,然后:
CREATE UNIQUE CLUSTERED INDEX uq_c_tt
ON dbo.troublesome_table(AId, BNumber, UserId);
Run Code Online (Sandbox Code Playgroud)
我怀疑你试图创建一个主键,而不是聚集索引?这是一个常见的误解(可能因为每个表只允许一个,默认情况下主键是聚类的)但主键和聚簇索引不是一回事.聚簇索引不必是主键,主键不必聚类.
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |