位置: 编程技术 - 正文

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

编辑:rootadmin
本文只是一个山寨试验品,思路仅供参考. --------------------------------------------------------------------------------原理介绍:索引建立 目录结构划分方案也只是很简易的实现了一下,通过unicode把任意连续的两个字符(中文或英文)分为4个字节来做四层目录,把索引的内容对应的主关键字(主要为了使用sql索引和唯一性)作为文件名,两个字符在索引内容中的位置作为文件后缀来存储.文件本身为0字节,不保存任何信息.比如一条数据 "pk","山寨索引" 山寨索引 四个字的unicode为[0]: [1]: [2]: [3]: [4]: [5]: [6]: [7]: 那么对应的文件结构为../////pk .0../////pk .1../////pk .2索引使用 比如搜索"寨索引 " 则搜索 "../////" 目录下的所有文件,然后根据 pk .1的文件后缀名1,去看 ../////pk.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 ( ), caption nvarchar ( )) 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/* 0CEA-DF-A-A8E5-BD5FEED 我的索引 测试 2DDB-CD3F-4F-BB4A-F 我的索引 测试 8CA6C3-F-C-BA-CEAE3E 我的索引 测试 CBF1-FB1F-FB-8A-ECEAD3E5 我的测试 索引 8BBFCC-9DBB-4FCB-B2EB-DEDD5F 我的测试 索引 8BD-8E--A-CDF1FA0A 我的测试 索引 */ --drop table test --------------------------------------------------------------------------------clr代码如下:编译为MyFullIndex.dll--------------------------------------------------------------------------------部署的sql脚本如下--drop function dbo.xfn_SetMyIndexFileRoot --drop function dbo.xfn_GetMyIndexFileRoot --drop function dbo.xfn_GetKeyFromMyIndex --drop function dbo.xfn_SetKeyForMyIndex --drop assembly MyFullIndex --go CREATE ASSEMBLY MyFullIndex FROM 'd:/SQLCLR/MyFullIndex.dll' WITH PERMISSION_SET = UnSAFE; -- go -- 索引搜索 CREATE FUNCTION dbo. xfn_GetKeyFromMyIndex ( @word nvarchar ( max ), @indexName nvarchar ( )) RETURNS table ( pk nvarchar ( )) AS EXTERNAL NAME MyFullIndex. UserDefinedFunctions. GetIndex go -- 索引建立 CREATE FUNCTION dbo. xfn_SetKeyForMyIndex ( @pk nvarchar ( ), @indexName nvarchar ( ), @word nvarchar ( max )) RETURNS int AS EXTERNAL NAME MyFullIndex. UserDefinedFunctions. SetIndex go -- 获取索引文件根目录 CREATE FUNCTION dbo. xfn_GetMyIndexFileRoot () RETURNS nvarchar ( max ) AS EXTERNAL NAME MyFullIndex. UserDefinedFunctions. GetRoot go -- 设置索引文件根目录(默认目录为 d:/myindex ) CREATE FUNCTION dbo. xfn_SetMyIndexFileRoot ( @FileRoot nvarchar ( max )) RETURNS bit AS EXTERNAL NAME MyFullIndex. UserDefinedFunctions. SetRoot go

推荐整理分享SQL2005CLR函数扩展 - 关于山寨索引(sqlldr 函数),希望有所帮助,仅作参考,欢迎阅读内容。

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

文章相关热门搜索词:sql函数coalesce,sql all函数,sql clr,sqlceiling函数的用法,sql clr,sql clr,sqlceil函数,sqlceil函数,内容如对您有帮助,希望把文章链接给更多的朋友!

SQLCLR函数扩展-繁简转换的实现代码 这个方法比较简单,用Microsoft.VisualBasic命名空间下强大的字符串处理函数就可以了c#代码如下,编译为BigConvertor.dll--------------------------------------------------

SQLCLR函数扩展-解析天气服务的实现 我们可以用CLR获取网络服务来显示到数据库自定函数的结果集中,比如的天气预报

SQLCLR函数扩展-数据导出的实现详解 SQLServer数据导出到excel有很多种方法,比如dts、ssis、还可以用sql语句调用openrowset。我们这里开拓思路,用CLR来生成Excel文件,并且会考虑一些方便操作

标签: sqlldr 函数

本文链接地址:https://www.jiuchutong.com/biancheng/319408.html 转载请保留说明!

上一篇:sql server2005实现数据库读写分离介绍(sql2005使用)

下一篇:SQL2005CLR函数扩展-繁简转换的实现代码(sql cell函数)

  • 税金及附加是负债类吗
  • 价税分离的公式是什么呀
  • 医院固定资产折旧率是多少
  • 政府补助确认递延所得税
  • 私人口腔诊所会感染艾滋病吗
  • 员工全额承担社保账务怎么做?
  • 同一控制下企业合并取得的长期股权投资
  • 接受捐赠材料支付的运费 扣除
  • 会计凭证传递的终点是
  • 工程施工购买的标示牌怎么开票给甲方
  • 技术服务年费是什么
  • 管理费用和财务费用算营业成本吗
  • 不同项目的进项税可以抵销项税吗
  • 企业所得税必须要季度缴纳吗
  • 企业哪些可以抵扣增值税
  • 工程分包是什么工作
  • 施工服务费税率9%
  • 哪些人可以享受长护险
  • 不需要缴纳增值税的有
  • 资产转让的优点
  • 服务业增值税如何计算
  • 补提以前年度无形资产摊销税务处理
  • 房地产销售佣金表格模板
  • 不征收增值税的项目有哪些
  • 怎么批量给指定条件加入批注
  • 计提跌价准备会影响利润吗
  • 小微企业可以享受六税两费吗
  • PHP:mb_substr_count()的用法_mbstring函数
  • php怎么上传多个图片
  • php怎么配置环境
  • php编程风格规范要求
  • 权益法核算的长期股权投资入账价值
  • 联想win10自动修复失败还能保存文件吗
  • PHP:mcrypt_list_algorithms()的用法_Mcrypt函数
  • 特许权使用费的增值税税率是多少
  • 如何用php操作mysql
  • 应交税费会计分录例题
  • phpwhile循环多维数组
  • 机器学习篇-指标:AUC
  • 计算机专业的毕业设计作品新颖
  • ps位图矢量化
  • 资产支出加权平均数例题
  • 接待客人发生的事故
  • 非限定性资产和业务活动表关系
  • 利息调整摊销额计入投资收益吗
  • 客户要发票加收怎么办
  • 个人所得税申报教程
  • 减免税款属于政府补助利得吗
  • 机械租赁收入算成本吗
  • 政府补助属于不征税金吗
  • 预付账款和应付账款的区别与联系
  • 政府补助都有哪些类型
  • 应收账款提坏账分录
  • 以银行存款支付所欠税金48000
  • 印花税计提金额怎么算
  • 出口货物索赔如何确认收入
  • 库存商品用于研发分录
  • mysql怎么使用索引
  • 在Linux系统中安装MySQL
  • 在基于Xen的CentOS系统VPS上配置PPTP VPN的教程
  • freebsd怎么安装软件
  • 进程lsass.exe
  • Win10 Mobile 10572怎么更新升级? 需回滚到WP 8.1
  • WIN XP下VMware Tools(虚拟机)安装的详细方法(图文教程)
  • mac系统教程
  • linuxzen
  • win10电脑提示
  • Win8.1不借助第三方软件怎么给文件夹加密并隐藏
  • win7 64位系统怎么查看串口号?
  • jquery ztree实现右键收藏功能
  • jQuery插件能输出到控制台
  • 置顶聊天的人怎么不见了
  • python 中 range
  • Linux bash Shell中的变量类型详解
  • shell脚本中实现rm -fr !(file1)
  • unity 几种触发事件
  • jquery右键弹出菜单
  • androidday3
  • js实现的功能
  • 单位税额怎么算出来的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设