lucene3.5与mysql 查询性能的对比
由于最近做毕设,需要做一个商品查询模块,用到了lucene来做商品索引的查询,原因为:
1.marks(商品标签)字段含有多个标签,当针对某个标签查询时,或许只能用like 查询,这样的查询慢!
2.没用过lucene,想用来测试下性能
可能结果早就显而易见,但是这次测试我要的是数据,不仅仅是结果,所以别说什么你们知道答案类似的话~
言归正传,我的设计是这样的:
?
而,性能对比,对比的就是搜索条件,是在lucene快,还是直接去mysql快!
我的lucene模块提供了两种索引方式,
?????一种是创建索引在文件中,需要查询时在索引文件中去查询
? ? ?二是在内存中创建索引,需要时直接再内存中查询
由于第二种方式明显快于第一种(设计第一种的原因是,索引仅仅在内存是不够的,需要持久化,不能每次都重新拉数据再创建索引),所以仅仅是放上测试数据,仅作对比!
说明:
1.MYSQL只有主键索引,marks字段建有索引,但是通过
explain? select * from t_baobei?? t where???? t.baoBeiMarks like '%手'? ;
explain? select * from t_baobei?? t where???? t.baoBeiMarks like '%手%'? ;
explain? select * from t_baobei?? t where???? t.baoBeiMarks like '手%'? ;
三种情况确认,该SQL语句没有用到索引
2.lucene分词器用的是
StandardAnalyzer()
测试1: (1W条数据)
创建索引在文件中:
? ? ? ?????index's?num?is 10000
? ? ? ? ? ?create? use : 1953?ms
? ? ? ? ???search ?use :?547?ms
创建索引在内存中:
? ? ? ? ? ?index's?num?is 10000
? ? ? ? ? ?create? use : 1046?ms
? ? ? ? ? ?search? use : 94?ms
MYSQL中:
SQL 语句为?SELECT * from t_baobei t? WHERE t.baoBeiMarks like?? '%手机%'
? ?search? use :?16ms?--40ms
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。