浅谈小型数据库增量搜索

对于现在的网络来说,日新月异的变化,对于数据库的压力来说实在不小了.
那么对于一个小型数据库的模糊查询要如何处理才能稍微妥当些呢,接下来笔者就潜谈一下数据搜索.
以一个200W数据库来举例.其中需要查询字段一个为nvarchar(300),Ntext 两个字段,要对这样一个表的数据进行like模糊查询,操作时间势必要超时,即便我们把超时时间设置的很长很长,但是对于用户来说,这样的等待时间时不能容忍的.而且数据库的压力超过80%以上,包括CPU 硬盘都已经跟不上了,(CPU 4核*2 1.7 4G内存 两块1.5K转的硬盘做磁盘阵列).那么我们要如何针对这种中小型数据进行有效的模糊查询呢?
首先我们要在需要查询的两个字段上做全文索引,不要小看了这全文索引!它能轻松的将效率提高50%以上.所以这不千万不能少.
然后我们可以将需要查询的这个表放到另一个文件组中.这个文件组最好能在另一块物理硬盘上,这样能有效的减轻主数据库在文件大小上的I/o瓶颈,如果使用支持表分区的数据库那么请将表分区吧.最大限度上的减少对磁盘"损耗".
这仅仅是对数据库的小小手术,而最重要的处理就要出来了!
增量搜索.
对,就是它!所谓增量搜索是指在一个表中记录相关的数据Id,另一个表记录关键字,下面就简单说一下构造以及简单使用
表1 字段:infoId(int),dateTm(date),keyId(int) keyId和infoId联合主键,此表储存信息的ID,信息的时间,以及关键字的Id.
表2 字段:id(int),keyStr(nvarchar),lastSecId(id),infoCount(int) 说明:主键ID,keyStr搜索的关键字,lastSecId最后一次搜索进行到信息的ID,infocount 搜索总记录数.

理论,
首先判断数据库表2中是否存在此关键字
存在,提取到最后一次搜索到的ID,在信息表中模糊查询这个关键字ID大于最后一次搜索信息Id的信息,并单单提取它们的ID以及信息日期,并将这些ID插入到表1中.
不存在,从信息的第一条开始查询并提取它们的ID以及信息日期,并将这些ID插入到表1中.

插入完成后,用数据库端分页模式在表1中查询关键字ID为查询关键Id的信息在信息表中查Id IN 查询出来的Id

以上只是简单的理论,但是很有效.其中还有很多难点需要攻破.这就需要各位自己来"看破红尘"了.
这样出来的结果是每个关键词在第一次查询的时候特别的慢,有时回出现超时的状况.但是以后的搜索回较为快捷.
如果要是对自己搜索的行业或者内容由一个词库是最好不过的了.可以在已有的数据上做好索引,这样大多数人搜索常用词库中关键词的时候不会出现第一次搜索的那样.

以上是对中小数据量的数据库进行简单的模糊查询的概述.可能有很多没有考虑或者不正确的地方.请大家多多见谅.

也希望如果大家有什么见解与本人讨论!

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值