• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SQL2000 全文索引完全图解

    全文检索可以对varchar,text,image型字段进行检索,但一个表最多只能建一个全文索引
    SQL Server 2000 引入了对存储在 image 列中的这些类型的数据执行全文检索的能力。
    如果没有全文索引,对字符的模糊查询只能对基表进行全表扫描(或索引扫描),
    执行模糊查询都需要对全表扫描或索引扫描意味着消耗大量IO。
    如果模糊查询经常发生,会造成数据库性能恶化。
    本篇为简单起见,仅在varchar型字段上图文演示非常完整的而且是高效可行的全文索引
    创建及维护过程.
    1:
    在企业管理器中展开要建立全文索引的数据库,右击“全文目录”,选择“新建全文目录”
    如 图1 所示。
    可以修改全文目录的路径,通过将全文目录放在单独的磁盘或磁盘阵列可以提高效率。
    建议不要对整个全文目录进行任何形式的填充调度。

    =================== 图1 ===================
    2:
    接下来对具体的表添加全文索引。
    全文索引不能建立在视图上,只能建立在有唯一索引(主键也是唯一索引)的基础表上。
    下图2 演示如何对表建立全文索引。
    演示中的 t_fulltext 表的建表及初始化数据的脚本如下:
    create table t_fulltext
    (
    rid int identity(1,1),
    title varchar(256) not null,
    writetime datetime default(getdate())
    )
    go
    alter table t_fulltext add constraint pk_fulltext primary key ( rid )
    go
    --初始化数据
    insert into t_fulltext(title) values('山东蓬莱河西金矿透水事故2人死亡3人失踪(21:29)')
    insert into t_fulltext(title) values('泰国将在广西南宁设立总领事馆(21:10)')
    insert into t_fulltext(title) values('河北安徽等12省减免农业税等政策落实到位(20:43)')
    insert into t_fulltext(title) values('台湾学者托梦预测陈水扁元旦讲话(20:04)')
    insert into t_fulltext(title) values('澳门特首何厚铧发表元旦献辞向市民问候新年(20:02)')
    insert into t_fulltext(title) values('南水北调首个建成项目山东段济平干渠通水成功(19:48)')
    insert into t_fulltext(title) values('组图:北京110摩托车巡警亮相(18:07)')
    insert into t_fulltext(title) values('福建广西发生患者死亡事件 医院责任人被处理(17:33)')
    insert into t_fulltext(title) values('北京大容量公交车运营首日遭遇乘客爆满(17:30)')
    insert into t_fulltext(title) values('北京公安系统今天全部停休严查五环内放炮(17:30)')
    insert into t_fulltext(title) values('研究发现海龙基因酶对禽流感病毒有杀伤作用(17:27)')
    insert into t_fulltext(title) values('上海世博会筹办进入实质性操作面临五大挑战(17:03)')
    insert into t_fulltext(title) values('台媒体称陈水扁元旦祝词必将老调重弹(15:30)')
    insert into t_fulltext(title) values('珠三角咸潮影响范围小于去年(15:12)')
    insert into t_fulltext(title) values('上海市民体验轨道交通4号线列车(组图)(14:53)')
    insert into t_fulltext(title) values('广州亿元集资诈骗案主犯王日升被判死缓(图)(14:44)')
    insert into t_fulltext(title) values(' 评论:取消农业税让民众共享经济增长成果(17:30)')
    insert into t_fulltext(title) values('香港媒体谈美国应对中国新策略:合作与防范(15:57)')
    insert into t_fulltext(title) values('专访中国地震局局长陈建民:地震是能够预测的(15:56)')
    insert into t_fulltext(title) values('评论:野蛮公交莫成城市丑陋形象代言人(13:27)')
    insert into t_fulltext(title) values('台媒体称当局与民间企业对立非民众之福(12:50)')

    =================== 图2 ===================
    3:出现的欢迎界面如 图3

    =================== 图3 ===================
    4:为全文索引选择唯一索引,如 图4

    =================== 图4 ===================
    5:选择全文索引的列,注意一张表只能建一个全文索引。建
    议不要选择断词的语言,这样实际会使用默认的断词语言。如图5 所示。
    通过运行
    sp_configure 'default full-text language'
    可以查看默认的断词语言,如我的机器上运行上条语句,config_value 值是 2052
    它表示简体中文。
    其它代码所表示的语言可以查阅Book Online的“default full-text language”关键词。
    由于SQL Server对中文断词并不是很高明,因此并不能依靠SQL Server带给您非常智能的搜索,这意味着您的全文搜索结果,可能有不希望出现的记录,或您希望出现的记录没有出现。

    =================== 图5 ===================
    6:将表指派到全文目录,如 图6 所示,也可以通过此界面创建新目录。

    =================== 图6 ===================
    7:接下来会提示对表进行填充调度,为能够准实时地把基表的全文索引列的修改(增、删、改)准实时地应用到全文索引,建议使用下面介绍的其它方法进行索引维护。如 图7 所示,建议不要在这里添加任何调度,直接点击“下一步”。
    如果数据不会再修改,则在一次完全填充以后,不用再增加其它类型的表级填充。
    如果实施到本步骤,不再添加任何形式的表调度,那么基表数据的更新,将不能更新到全文索引。

    =================== 图7 ===================
    8:如 图8 所示出现的完成界面提示中点击“完成 ”,请稍微等待直到出现下一界面。

    =================== 图8 ===================
    9:在如 图9 所示的界面中点击“确定”。
    由于尚未在表上添加任何调度,因此还需要继续设置。

    =================== 图9 ===================
    10:在企业管理器中右击 f_fulltext 表,如 图10 所示,选中“更改跟踪”。
    选中更改跟踪后,以后对基表数据的修改,才能反映到全文索引中。
    特别注意:一旦选中“更改跟踪”,根据经验,其实是必须对该表进行完全填充的。
    如果是在线使用的全文索引数据库,选中“更改跟踪”会导致性能迅速下降,导致全文索引
    无法使用。

    =================== 图10 ===================
    11: 在企业管理器中右击 f_fulltext 表,如 图11 所示,选中“更新后台中的索引”。
    到本步,全文索引就完全完成了。由于我们选中了“更改跟踪”,此时实际已经开始了表的完全填充。
    根据经验,300万条全文索引字段长为 50 的表,需要8到10小时才能完成完全填充。

    =================== 图11 ===================
    12:可以通过双击全文目录下的全文索引,查看该全文目录的属性,如 图12 所示,状态为“空闲”,而项目计数大于0,则表示完全填充已经完成了。

    =================== 图12 ===================
    13:如何进行全文索引查询(仅简单介绍)
    全文索引查询建议使用 CONTAINS 及 FREETEXT 谓词进行查询。
    如果关键词仅包括干扰词(有关干扰词的信息,请参阅Book Online的“干扰词”关键字)
    select * from t_fulltext where contains(title,'3')
    则会报如下错误
    服务器: 消息 7619,级别 16,状态 1,行 1
    全文操作运行失败。查询子句只包含被忽略的词。
    使用下面的语法,能避免出现错误,且能够确实查询出正确的记录。
    select * from t_fulltext where contains(title,'"*3*"')
    13 台媒体称陈水扁元旦祝词必将老调重弹(15:30) 2005-12-31 23:17:17.670
    10 北京公安系统今天全部停休严查五环内放炮(17:30) 2005-12-31 23:17:17.653
    17 评论:取消农业税让民众共享经济增长成果(17:30) 2005-12-31 23:17:17.670
    9 北京大容量公交车运营首日遭遇乘客爆满(17:30) 2005-12-31 23:17:17.653
    8 福建广西发生患者死亡事件 医院责任人被处理(17:33) 2005-12-31 23:17:17.653
    (所影响的行数为 5 行)
    全文索引的简单介绍就到这里了,希望能起个抛砖引玉的作用。

    您可能感兴趣的文章:
    • mssql 建立索引
    • MSSQL 大量数据时,建立索引或添加字段后保存更改提示超时的解决方法
    • 关于重新组织和重新生成索引sp_RefreshIndex的介绍
    • SQL2005CLR函数扩展 - 关于山寨索引
    • MSSQL自动重建出现碎片的索引的方法分享
    • 理解Sql Server中的聚集索引
    • Sql Server中的非聚集索引详细介
    • 在SQL SERVER中导致索引查找变成索引扫描的问题分析
    • 详解sqlserver查询表索引
    • SQL2005重新生成索引的的存储过程 sp_rebuild_index
    上一篇:mssql insert into 和insert into select性能比较
    下一篇:Cont()与Where().Count()有时性能差别如此之大!
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    SQL2000 全文索引完全图解 SQL2000,全文,索引,完全,图解,