sqlsever 2008 全文索引的使用

  最近一个客户维护的老网站,使用的是asp.net加sqlserver的技术开发,反应查询特别慢,一检查,发现需要查询的字段是ntext类型的,使用的like 模糊查询。现数据库该查询表数据并不多,只有1万多条。但是使用like 模糊查询ntext 字段分页,第一页还可以正常查询,第二页后几分钟都无法查询到,一直查询中。于是想到sqlserver 的全文索引。全文索引是一种专门用于高效处理文本数据搜索需求的数据库索引技术,通过构建倒排索引结构实现对文本内容的快速检索。下面记录一下全文索引的安装方法 。

    第一步:  检查计算机管理服务中,是否有这个服务,没有的话,需要通过sqlserver安装包安装全文索引组件。

     

第二步:安装好后,开始设置全文索引,通过查询命令或者sql server Management Studio 实现,或者通过命令实现

          1)命令实现

            

--执行SQL语句启用全文检索
Execute sp_fulltext_database 'enable'

--假如有News表,有列为Content字段

CREATE FULLTEXT CATALOG ftNews AS DEFAULT;
CREATE FULLTEXT INDEX ON News(Content)
KEY INDEX PK_News -- PK_News 是 Content 列所在的索引名称
WITH (CHANGE_TRACKING = AUTO);

         2)通过sql server Management Studio实现

 

 

   第三步:新建索引后,可以通过查询获取数据,由于数据库使用了视图分页查询,所以查询条件只能这样写了

          

where id in (select id from news where  contains(content,'法人'))

  

相关参考:https://www.cnblogs.com/cuihongyu3503319/p/9093049.html

     

注意:在使用 SQL Server 开发时,如果你遇到了“表或索引视图 'News' 具有类型为 image、text 或 ntext 的全文索引列。全文更改”这样的错误消息,通常是因为你正在尝试对一个使用了 imagetext 或 ntext 数据类型的列执行全文索引操作,而这些数据类型在 SQL Server 2008 及以后的版本中已经被弃用并被 varbinary(max)varchar(max) 和 nvarchar(max) 替代。

建议以后新开发不要使用这些数据类型

 

   

posted @ 2025-07-10 11:50  fogwu  阅读(44)  评论(0)    收藏  举报