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

两种索引的功能和结构都是不同的,普通索引的结构主要以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全文索引文档

Sql Server专题一:索引(下)的更多相关文章

  1. Sql Server专题一:索引(中)

    写在前面的废话: 索引这个知识点,我前前后后不知道看了多少边,网上的文章五花八门,搞的我晕头转向,搞的牛逼点的就是测试索引带来的好处,还搞一大堆的测试数据出来,有意思吗?MS自己不会测试吗?这样的测试 ...

  2. SQL Server 深入解析索引存储(下)

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引体系结构/非聚集索引 概述 非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点: 基础表的数据行不按非 ...

  3. SQL SERVER全面优化-------索引有多重要?

    想了好久索引的重要性应该怎么写?讲原理结构?我估计大部分人不愿意看,也不愿意花那么多时间仔细研究.光写应用?感觉不明白原理一样不会用.举例说明?情况太多也写不全....到底该怎么写呢? 随便写吧,想到 ...

  4. Sql Server系列:索引基础

    1 索引概念 索引用于快速查找在某个列中某个特定值的行,不使用索引,数据库必须从第1条记录开始读完整个表,知道找出需要的行.表越大,查询数据所花费的时间越多.如果表中查询的列有索引,数据库能快速到达一 ...

  5. SQL Server基础之索引

     索引用于快速找出在某个列中有某一特定值的行,不使用索引,数据库必须从第一条记录开始读完整个表,直到找出相关的行.表越大,查询数据所花费的时间越多,如果表中查询的列有一个索引,数据库能快速到达一个位置 ...

  6. SQL Server 列存储索引强化

    SQL Server 列存储索引强化 SQL Server 列存储索引强化 1. 概述 2.背景 2.1 索引存储 2.2 缓存和I/O 2.3 Batch处理方式 3 聚集索引 3.1 提高索引创建 ...

  7. SQL Server中的索引

    1 SQL Server中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度.索引包含由表或视图中的一列或多列生成的键.这些键存储在一个结构(B 树)中,使 SQL Serve ...

  8. 转载: SQL Server中的索引

    http://www.blogjava.net/wangdetian168/archive/2011/03/07/347192.html 1 SQL Server中的索引 索引是与表或视图关联的磁盘上 ...

  9. SQL Server 深入解析索引存储(非聚集索引)

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/索引体系结构/非聚集索引 概述 非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点: 基础表的数据行不按非 ...

  10. SQL查询优化:详解SQL Server非聚集索引(转载)

    本文是转载,原文地址 http://tech.it168.com/a2011/1228/1295/000001295176.shtml 在SQL SERVER中,非聚集索引其实可以看作是一个含有聚集索 ...

随机推荐

  1. haproxy之负载均衡算法

    backend     blance 算法 动态hash的特点     服务器运行时就可进行权重调整,即只需要重新载入配置文件即可,不需要重新启动haproxy     支持慢速启动,即重新恢复的后端 ...

  2. project euler 16:Power digit sum

    >>> sum([int(i) for i in str(2**1000)]) 1366 >>>

  3. php文件处理

    1. 将数据写入文件步骤 1. 打开这个文件,如果不存在,则新建文件 2. 将数据写入文件 3. 关闭文件 2. 从文件中读取数据步骤 1. 打开一个文件,如果不能打开,如文件不存在,应安全退出 2. ...

  4. jQuery插件之jqzoom

    jqzoom是一款基于jQuery的图片方法插件. 使用方法:1.引入jQuery与jqzoom,jqzoom.css 2.准备两张一大一小大小相同的图片,小图片放在<img>标签的&qu ...

  5. SVN的错误: working copy locked

    提示:your working copy appears to be locked. run cleanup to amend the situation. 产生这种情况大多是因为上次svn命令执行失 ...

  6. Contains Duplicate II 解答

    Question Given an array of integers and an integer k, find out whether there are two distinct indice ...

  7. Best Time to Buy and Sell Stock III 解答

    Question Say you have an array for which the ith element is the price of a given stock on day i. Des ...

  8. PKU 1050-To The Max(找矩形内元素最大和)

    Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous s ...

  9. POJ3268 Silver Cow Party(dijkstra+矩阵转置)

    Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15156   Accepted: 6843 ...

  10. 手动调整导航控制器中的viewcontroller

    NSMutableArray *array = [[NSMutableArray alloc]initWithArray: [self.navigationController viewControl ...