设为首页 加入收藏

TOP

Sql Server全文索引创建及测试(一)
2015-11-21 01:41:12 来源: 作者: 【 】 浏览:2
Tags:Sql Server 全文 索引 创建 测试

?

--	创建测试表
--	DROP TABLE FullTextIndexing
CREATE TABLE FullTextIndexing
(
	ID INT IDENTITY(1,1) NOT NULL,
	Sentence VARCHAR(MAX)
)

--	创建聚集索引
ALTER TABLE FullTextIndexing ADD CONSTRAINT PK_FullTextIndexing PRIMARY KEY CLUSTERED(ID ASC)
GO

--	将"全文搜索概述"页面的文字全部拷贝到txt,然后倒入到表FullTextIndexing中
--	https://msdn.microsoft.com/zh-cn/library/ms142547(v=sql.105).aspx


--	重复15次,从47行变为154万行
INSERT INTO FullTextIndexing(Sentence)
SELECT Sentence FROM FullTextIndexing
GO 15


SELECT COUNT(*) FROM FullTextIndexing

--	【注】删除的语句不要执行!

--	创建全文目录
--	https://msdn.microsoft.com/zh-cn/LIBRARY/ms189520(v=sql.105).aspx
CREATE FULLTEXT CATALOG [Catalog_Test]
WITH
	ACCENT_SENSITIVITY = ON	--区分重音
	AS DEFAULT				--默认目录
	AUTHORIZATION [dbo];--全文目录的所有者
GO


--	更改全文目录的属性
--	https://msdn.microsoft.com/zh-cn/LIBRARY/ms176095(v=sql.105).aspx
ALTER FULLTEXT CATALOG [Catalog_Test] 
REBUILD WITH ACCENT_SENSITIVITY = ON;	--重新生成整个目录并区分重音
--REORGANIZE;	--重新组织全文目录
--AS DEFAULT;	--指定此目录为默认目录
GO

--	从数据库中删除全文目录(先删除全文索引)
--	https://msdn.microsoft.com/zh-cn/LIBRARY/ms188403(v=sql.105).aspx
DROP FULLTEXT CATALOG [Catalog_Test];
GO


--	创建干扰字表
--	https://msdn.microsoft.com/zh-cn/library/cc280405(v=sql.105).aspx
CREATE FULLTEXT STOPLIST [Stoplist_Test] 
FROM SYSTEM STOPLIST 
AUTHORIZATION [dbo];
GO  

--	添加删除干扰字
--	https://msdn.microsoft.com/zh-cn/library/cc280871(v=sql.105).aspx
ALTER FULLTEXT STOPLIST [Stoplist_Test]
ADD N'乎' LANGUAGE 2052;
GO 

ALTER FULLTEXT STOPLIST [Stoplist_Test]
DROP N'乎' language 2052;   
--ALL LANGUAGE 'English' 
--ALL
GO 

--	从数据库中删除全文本非索引字表
--	https://msdn.microsoft.com/zh-cn/library/cc280482(v=sql.105).aspx
DROP FULLTEXT STOPLIST [Stoplist_Test];
GO 


--	创建全文索引
--	https://msdn.microsoft.com/zh-cn/library/ms187317(v=sql.105).aspx
CREATE FULLTEXT INDEX ON [dbo].[FullTextIndexing]
(Sentence LANGUAGE 2052)		--索引列,明确列中存储的语言,方便过滤
KEY INDEX PK_FullTextIndexing	--全文键:当前表中唯一索引名称
ON [Catalog_Test]				--指定全文目录
WITH (
	STOPLIST [Stoplist_Test],	--指定全文非索引字表
	CHANGE_TRACKING AUTO		--自动填充
	);
GO

--	更改全文索引的属性
--	https://msdn.microsoft.com/zh-cn/library/ms188359(v=sql.105).aspx
--	激活全文索引
ALTER FULLTEXT INDEX ON [dbo].[FullTextIndexing] ENABLE;
GO

--	删除全文索引
--	https://msdn.microsoft.com/zh-cn/library/ms184393(v=sql.105).aspx
DROP FULLTEXT INDEX ON [dbo].[FullTextIndexing];
GO

?

?

--	测试常规查询方法(先查询全部数据,放到内存:154万行31秒)
SELECT * FROM FullTextIndexing

SET STATISTICS IO ON
SET STATISTICS TIME ON

SELECT * FROM FullTextIndexing WHERE Sentence LIKE '%全文索引%'
/*执行了几遍,耗时13440 毫秒

SQL Server 分析和编译时间: 
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

(229376 行受影响)
表 'FullTextIndexing'。扫描计数 1,逻辑读取 15633 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 SQL Server 执行时间:
   CPU 时间 = 11591 毫秒,占用时间 = 13440 毫秒。
*/

SELECT * FROM FullTextIndexing WHERE CHARINDEX('全文索引',Sentence)<>0
/*执行了几遍,耗时15338 毫秒

SQL Server 分析和编译时间: 
   CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。

(229376 行受影响)
表 'FullTextIndexing'。扫描计数 1,逻辑读取 15633 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

 SQL Server 执行时间:
   CPU 时间 = 12714 毫秒,占用时间 = 15338 毫秒。
*/
\

?

?

--	使用全文索引的方法:
SELECT * FROM [dbo].[FullTextIndexing] WHERE FREETEXT(
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇基于MongoDb创建NoSQL分布式的数.. 下一篇ThinkPHP实现对数据库中表的修改..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: