我目前正在做一些从 MS Access 到 SQL Server 的迁移。 Access 允许唯一索引中存在多个 Null,而 SQL Server 不允许...我一直在通过删除 SQL Server 中的索引并添加筛选索引来处理迁移:
CREATE UNIQUE NONCLUSTERED INDEX idx_col1_notnull
ON tblEmployee(col1)
WHERE col1 IS NOT NULL;
我遇到的问题是,我不确定如何实现复合或多列“过滤”索引......或者这是否真的可能,因为我在研究它时没有找到任何例子。
我确实有一个想法通过创建过滤索引来实现它,如下所示:
CREATE UNIQUE NONCLUSTERED INDEX idx_col1col2_notnull
ON tblEmployee (col1, col2)
WHERE col1 IS NOT NULL
然后添加第二个过滤索引:
CREATE UNIQUE NONCLUSTERED INDEX idx_col2col1_notnull
ON tblEmployee (col1, col2)
WHERE col2 IS NOT NULL
但我不确定这是否有效,更不用说是最好的方法了。正确方向的指导将不胜感激。
您可以添加以下索引以仅对不可为空的列建立索引:
create table tblEmployee(col1 int, col2 int)
go
create unique nonclustered index idx_col1col2_notnull ON tblEmployee(col1,col2)
where col1 is not null and col2 is not null
go
--This Insert successeds
insert into tblEmployee values
(null, null),
(null, null),
(1, null),
(1, null),
(null, 2),
(null, 2)
--This Insert fails
insert into tblEmployee values
(3, 4),
(3, 4)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)