You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SQL Server/Azure SQL:能否基于多列唯一聚集索引创建全文索引?

在SQL Server及Azure SQL中基于多列唯一聚集索引创建全文索引的可行性

当然可以!在SQL Server和Azure SQL环境中,完全支持基于多列唯一聚集索引来创建全文索引,只要这个索引满足全文索引对键索引的核心要求——它必须是目标表或视图上的唯一索引(聚集或非聚集均可,你的示例中使用的唯一聚集索引完全符合条件)。

示例代码解析

你的示例代码是完全合法且可执行的,下面是格式化后的代码及说明:

-- 创建包含多列的唯一聚集索引,作为全文索引的键索引
CREATE UNIQUE CLUSTERED INDEX idx_ContactsView ON ContactsView (ContactId,CeId,CpId);
GO

-- 基于上述多列唯一聚集索引,为指定列创建全文索引
CREATE FULLTEXT INDEX ON dbo.ContactsView (Name,Email,PhoneNumber) 
KEY INDEX idx_ContactsView ON ContactsCatalog;

-- 关闭停用词表,避免系统默认停用词影响全文检索结果
ALTER FULLTEXT INDEX ON ContactsView SET STOPLIST = OFF

关键注意点

  • 全文索引依赖的键索引必须能唯一标识每一行数据,多列组合的唯一索引(不管是聚集还是非聚集)都可以满足这个要求,因为它能确保每行的索引列组合值唯一。
  • 这个逻辑在SQL Server(包括各主流版本)和Azure SQL数据库、Azure SQL托管实例中均适用,不存在环境兼容性差异。

内容的提问来源于stack exchange,提问作者Shyamal Parikh

火山引擎 最新活动