网站地图    收藏   

主页 > 后端 > php资料库 >

mysql数据库关于大数据量模糊查询的方法_自学p

来源:自学PHP网    时间:2014-12-04 22:12 作者: 阅读:

[导读] 说实话,在ITPUB上也好,CNOUG上也好,看到很多人问数据模糊查询的问题,特别是一张表的数据量在200M以后,你的查询速度越来越慢。 其实最最简单的就是 like %xx%,但是这样效率极差,...

说实话,在ITPUB上也好,CNOUG上也好,看到很多人问数据模糊查询的问题,特别是一张表的数据量在200M以后,你的查询速度越来越慢。

其实最最简单的就是 like ‘%xx%’,但是这样效率极差,纯粹在拼机器的IO了。

其实在我的日常工作中,对于模糊查询,主要使用以下几种方案提高效率:

A:全文索引

Oracle自带的,SQL SERVER,MYSQL也有这个功能。它的主要实现方式是拆字。记得“玉面飞龙”有一篇文章介绍ORACLE全文索引的,介绍的很详细。

但是全文索引也有很多不足,如:繁体字,孤僻字的支持不好;内部BUG比较多;自身维护的代价和成本很高;新来的开发搞不懂全文索引查询语法;

目前也就少数几个数据库在用全文索引了,打算在不远的将来,将全文索引拿下线了。全部使用Search实现。

B:搜索引擎

其实alibaba集团全部使用的搜索技术,叫“ISEARCH”;100%的知识产权归阿里巴巴所有。

其实在业界最有名的搜索引擎叫“Lunce”,它不仅仅支持JAVA,也支持.NET。

使用搜索最大的好处,它是可以线性扩展的,不像我们的DB。此外我介绍一下搜索引擎大致过程:

数据库有张LOG表,记录变化过的数据》》搜索引擎根据LOG表的数据,DUMP出一份BUILD数据》》把DUMP的东西分发到各个集群》》每台机器再把这个应用到索引文件》》APCHE提供WEB SERVICE给前台

大致过程就这样。至于索引文件本身是个二进制文件。

我觉得搜索引擎本身的实现机制和ORACLE的全文索引类似,也是根据分词器来分词。如果去查找也是根据一个个字Hash mapping出来的,然后根据位置先后次序,找出哪些是符合的。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论