• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MsSql > SQL2005CLR函数扩展 - 关于山寨索引

SQL2005CLR函数扩展 - 关于山寨索引

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了sqlclr,铁三角clr100,clr,铁三角 ath-clr100,clr20r3等相关知识,希望本文的分享对您有所帮助
本文只是一个山寨试验品,思路仅供参考.
--------------------------------------------------------------------------------
原理介绍:
索引建立
目录结构划分方案也只是很简易的实现了一下,通过unicode把任意连续的两个字符(中文或英文)分为4个字节来做四层目录,把索引的内容对应的主关键字(主要为了使用sql索引和唯一性)作为文件名,两个字符在索引内容中的位置作为文件后缀来存储.文件本身为0字节,不保存任何信息.

比如一条数据 "pk001","山寨索引"
山寨索引 四个字的unicode为
[0]: 113
[1]: 92
[2]: 232
[3]: 91
[4]: 34
[5]: 125
[6]: 21
[7]: 95
那么对应的文件结构为
../113/92/232/91/pk001 .0
../232/91/34/125/pk001 .1
../34/125/21/95/pk001 .2

索引使用
比如搜索"寨索引 "
则搜索 "../232/91/34/125/" 目录下的所有文件,然后根据 pk001 .1的文件后缀名1,去看 ../34/125/21/95/pk001.2文件是否存在.依次类推,最后返回一个结果集.
--------------------------------------------------------------------------------
实用性
具体的实用性还有待验证.这只是实现了精确的like搜索,而不能做常见搜索引擎的分词效果.另外海量数据重建索引的性能也是面临很严峻的问题,比如cpu负载和磁盘io负载.关于windows一个目录下可以保持多少个文件而不会对文件搜索造成大的性能损失也有待评估,不过这个可以考虑根据主键的文件名hash来增加文件目录深度降低单一目录下的文件数量.
--------------------------------------------------------------------------------
演示效果
实现了针对test标的name和caption两个字段作索引搜索.
 
-- 设置和获取索引文件根目录
--select dbo.xfn_SetMyIndexFileRoot('d:/MyIndex')
--select dbo.xfn_GetMyIndexFileRoot()
-- 建立测试环境
 go
create table test( id uniqueidentifier , name nvarchar ( 100), caption nvarchar ( 100))
insert into test select top 3 newid (), ' 我的索引 ' , ' 测试 ' from sysobjects
insert into test select top 3 newid (), ' 我的测试 ' , ' 索引 ' from sysobjects
insert into test select top 3 newid (), ' 测试索引 ' , ' 测试索引 ' from sysobjects
insert into test select top 3 newid (), ' 我的索引 ' , ' 索引 ' from sysobjects
create index i_testid on test( id)
-- 建立索引文件
declare @t int
select @t=
dbo. xfn_SetKeyForMyIndex( id, 'testIndex' , name + ' ' + caption)   
from test
-- 查询数据
select  a.*   from   test a, dbo. xfn_GetKeyFromMyIndex( '测试 索引 我的' , 'testIndex' )  b
    where a. id= b. pk
/*
0C4634EA-DF94-419A-A8E5-793BD5F54EED   我的索引 测试
2DD87B38-CD3F-4F14-BB4A-00678463898F   我的索引 测试
8C67A6C3-753F-474C-97BA-CE85A2455E3E   我的索引 测试
C9706BF1-FB1F-42FB-8A48-69EC37EAD3E5   我的测试 索引
8BBF25CC-9DBB-4FCB-B2EB-D318E587DD5F   我的测试 索引
8B45322D-8E46-4691-961A-CD0078F1FA0A   我的测试 索引
*/
--drop table test
--------------------------------------------------------------------------------
clr代码如下:编译为MyFullIndex.dll
        System.Collections.Generic.List <string > key_0 = _getIndex(a
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • SQL2005CLR函数扩展-深入环比计算的详解
  • SQL2005CLR函数扩展-数据导出的实现详解
  • SQL2005CLR函数扩展-解析天气服务的实现
  • SQL2005CLR函数扩展-繁简转换的实现代码
  • SQL2005CLR函数扩展 - 关于山寨索引

相关文章

  • 2017-05-11SqlServer2005中使用row_number()在一个查询中删除重复记录的方法
  • 2017-05-11Sql Server 2005中查询用分隔符分割的内容中是否包含其中一个内容
  • 2017-05-11sql2005开发版 没有任何功能可以安装
  • 2017-05-11安装SQL2005提示 找不到任何SQL2005组件的问题解决方案
  • 2017-05-11SQL2005 性能监视器计数器错误解决方法
  • 2017-05-11SQLSERVER2008中CTE的Split与CLR的性能比较
  • 2017-05-11SQL Server把单个用户转换成多个用户的方法
  • 2017-05-11SQL Server2005异地自动备份方法
  • 2017-05-11SQL Server 2005 镜像构建手册(sql2005数据库同步镜像方案)
  • 2017-05-11sql2005附加数据库操作步骤(sql2005还原数据库)

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 解析SQL2005中如何使用CLR函数获取行号
    • sqlserver2005使用row_number() over分页的实现方法
    • 将DataTable作为存储过程参数的用法实例详解
    • SQL Server 2005 中使用 Try Catch 处理异常
    • SQL Server把单个用户转换成多个用户的方法
    • PowerDesigner16生成SQL2005列注释的方法
    • sql2005 附加数据库出错(错误号:5123)解决方法
    • SQL Server 2008 R2英文版安装图文教程
    • SQL2008中SQL应用之- 死锁(Deadlocking)
    • SQLServer 查询当前服务器有多少连接请求的语句

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有