SQL Server 建一个唯一索引,NULL 值、零长度字符串都会参与唯一计算,只能有一个记录为 NULL,只能有一条记录为零长度字符串。
使用 SQL Server 就可以解决这种烦恼。
CREATE UNIQUE NONCLUSTERED INDEX IX_Users_1 ON Users(PhoneNumber) WHERE PhoneNumber <> '' GO
可以看出多了 WHERE 条件(上述 SQL 没有使用 NULL,因为我们表中没允许 NULL)。
哪些版本支持?
SQL Server 2008 及以上均可支持。
还有什么用?
由于 where 是活的,我们可以写很多条件,比如 state = 1 的情况才参与索引。
还有什么好处?
除了建索引更灵活,这种做法还减少了索引的存储和维护开销,有利于查询性能的提升。因为它排除了没必要建索引的记录。
可视化操作在哪?
在表设计中是不行的。
要展开表下面的“索引”文件夹,右键,新建索引,非聚集索引。
SQL Server 2008 是表下面的“索引”文件夹,右键,新建索引。
可视化进入后,筛选表达式示例:
([PhoneNumber]<>'')
相关阅读