zoukankan      html  css  js  c++  java
  • Sql Server专题一:索引(下)

    首先这次的内容是全文索引,跟前面讲的其实没有多大关系   

          两种索引的功能和结构都是不同的,普通索引的结构主要以B+树和哈希索引为主,用于实现对字段中数据的精确查找,比如查找某个字段值等于给定值的记录,A=10这种查询,因此适合数值型字段和短文本字段。全文索引是用于检索字段中是否包含或不包含指定的关键字,有点像搜索引擎的功能,其内部的索引结构采用的是与搜索引擎相同的倒排索引结构,其原理是对字段中的文本进行分词,然后为每一个出现的单词记录一个索引项,这个索引项中保存了所有出现过该单词的记录的信息,也就是说在索引中找到这个单词后,就知道哪些记录的字段中包含这个单词了。因此适合用大文本字段的查找。大字段之所以不适合做普通索引,最主要的原因是普通索引对检索条件只能进行精确匹配,而大字段中的文本内容很多,通常也不会在这种字段上执行精确的文本匹配查询,而更多的是基于关键字的全文检索查询,例如你查一篇文章信息,你会只输入一些关键字,而不是把整篇文章输入查询(如果有整篇文章也就不用查询了)。而全文索引正是适合这种查询需求。

    下面实例转自:http://blog.csdn.net/bloglife/article/details/2283072

    全文索引

    一个完整的SQL SERVER数据库全文索引示例。(以pubs数据库为例)

    一、首先,介绍利用系统存储过程创建全文索引的具体步骤:
    1) 启动数据库的全文处理功能          (sp_fulltext_database) 
    2) 建立全文目录                      (sp_fulltext_catalog) 
    3) 在全文目录中注册需要全文索引的表  (sp_fulltext_table) 
    4) 指出表中需要全文索引的列名        (sp_fulltext_column) 
    5) 为表创建全文索引                  (sp_fulltext_table) 
    6) 填充全文目录                      (sp_fulltext_catalog)

    二、示例,以对pubs数据库的title和notes列建立全文索引,之后使用索引查询title列或notes列中包含有datebase 或computer字符串的图书名称:
    在这之前,需要安装Microsoft Search服务,启动SQL server全文搜索服务

    user pubs --打开数据库 
    go 
    --检查数据库pubs是否支持全文索引,如果不支持则使用sp_fulltext_database 打开该功能 
    if(select databaseproperty('pubs','isfulltextenabled'))=0  
      execute sp_fulltext_database 'enable' 
    --建立全文目录FT_PUBS 
    execute sp_fulltext_catalog 'FT_pubs','create' 
    --为title表建立全文索引数据元 
    execute sp_fulltext_table 'title','create','FT_pubs','UPKCL_titleidind' 
    --设置全文索引列名 
    execute sp_fulltext_column 'title','title','add' 
    execute sp_fulltext_column 'title','notes','add' 
    --建立全文索引,activate,是激活表的全文检索能力,也就是在全文目录中注册该表 
    execute sp_fulltext_table 'title','activate' 
    --填充全文索引目录 
    execute sp_fulltext_catalog 'FT_pubs','start_full' 
    go 
    --检查全文目录填充情况 
    While fulltextcatalogproperty('FT_pubs','populateStatus') <>0 
    begin 
    --如果全文目录正处于填充状态,则等待30秒后再检测一次 
    waitfor delay '0:0:30' 
    end 

    三、全文目录填充完成后,即可使用全文目录检索

    select * from title 
    where CONTAINS(title,'database') 
    or CONTAINS(title,'computer') 
    or CONTAINS(notes,'database') 
    or CONTAINS(notes,'database') 


    四、以下介绍一下全文操作类的系统存储过程

    过程名称:sp_fulltext_service 
    执行权限:serveradmin或系统管理员 
    作    用:设置全文搜索属性

    过程名称:sp_fulltext_catalog 
    执行权限:db_owner及更高角色成员 
    作    用:创建和删除一个全文目录,启动或停止一个全文目录的索引操作

    过程名称:sp_fulltext_database 
    执行权限:db_owner角色成员 
    作    用:初始化全文索引或删除数据库中所有全文目录

    过程名称:sp_fulltext_table 
    执行权限:db_ddladnmin或db_owner角色成员 
    作    用:将一个表标识为全文索引表或非全文索引表

    过程名称:sp_fulltext_column  
    执行权限:db_ddladnmin角色成员 
    作    用:指出一个全文索引表中的那些列假如或退出全文索引

    附件:SQL SERVER 2008全文索引文档

  • 相关阅读:
    部署 AppGlobalResources 到 SharePoint 2010
    还原一个已删除的网站集
    使用仪表板设计器配置级联筛选器 (SharePoint Server 2010 SP1)
    File or arguments not valid for site template
    Pex and Moles Documentation
    Content Query Webpart匿名访问
    Running Moles using NUnit Console from Visual Studio
    Calling a WCF Service using jQuery in SharePoint the correct way
    Updating Content Types and Site Columns That Were Deployed as a Feature
    asp.net中判断传过来的字符串不为空的代码
  • 原文地址:https://www.cnblogs.com/java-oracle/p/5382132.html
Copyright © 2011-2022 走看看