分两种思路考虑模糊查询的效率。 -注:集中精力处理百万级数据量,少量数据即可
第一,将数据保存在业务内存中,通过查询内存来提高效率。 (要求:硬件内存高)
1 )想实现存储器的动态数据时,可以监视表数据的变化并更新存储器。
二是改进了oracle数据库的查询方法。
1、使用两侧带“%”的查询时,oracle不会通过索引,因此查询效率很低。
示例: selectcount(* ) from lui _ user _ basetwheret.user _ name like ' % cs % ';
2、like'.% '和like'% . '虽然进行了索引,但效率仍然很低。
3、据说使用以下sql,他的效率提高了10倍,但数据量小时
选择计数(* ) from lui_user_base where rowid in ()
selectrowidfromlui _ user _ basetwheret.user _ name like ' % cs % '
)
我测试了100瓦的跳跃数据,效果一般,依然很慢。 原因:
名为selectrowidfromlui _ user _ basetwheret.user _ name like“% cs %”的sql运行得很快,而且速度相当快。
但是,放入selectcount(* ) from lui_user_base where rowid in ) )会降低效率。
4、selectcount(* ) fromLui_user_basetwhereinstr ) t.user_name,' cs ' ) 0
这个查询效果好,速度快,所以推荐这个。 我对oracle的内部机制不太了解,所以我只是对结果进行了说明。 真不好意思啊。
5、有人告诉我要使用全文索引。 看到了。 虽然步骤很麻烦,但是是个好方法。 留着备用的。
3358 sandish.itpub.net/post/4899/464369
要全文搜索cmng_custominfo表中的地址字段,请执行以下步骤:
1,需要在oracle9201中创建分词的内容:
比根
CTX _ DDL.create _ preference (SMS _ address _ lexer ),CHINESE_LEXER );
- CTX _ DDL.create _ preference (' my _ lexer ',' chinese_vgram_lexer ' ); 不需要
结束;
2、创建全文搜索:
createindexinx _ custom info _ addr _ docsoncmng _ custom info (地址) indextypeisctxsys.context parameters (lexersmars
3、咨询时使用:
slect * fromc mng _ custominfowherecontains (地址,'金色新城') 1;
4、需要定期同步和优化:
同步根据新记录的文本内容更新全文索引。
比根
CTX _ DDL.sync _ index (inx _ custom info _ addr _ docs );
结束;
优化:根据删除的记录删除全文索引中的垃圾
比根
CTX _ DDL.optimize _ index (inx _ custom info _ addr _ docs ',' FAST ' );
结束;
5、聘用job做好第四步工作:
1 )该功能需要利用oracle的作业功能进行
由于oracle9I默认情况下未启用作业功能,因此必须首先增加ORACLE数据库实例的作业配置参数。
job_queue_processes=5
重新启动oracle数据库服务和监听器服务。
2 )同步和优化
-同步同步:
可变作业编号;
比根
DMS_job.submit(:jobno,' CTX _ DDL.sync _ index (' inx _ custom info _ addr _ docs ' ' ' ) ) ) ) 、SYSDATE、' sysdate(1/24/4 ) );
commit;
结束;
-优化
可变作业编号;
比根
DMS_job.submit(:jobno,' CTX _ DDL.optimize _ index (' inx _ custom info _ addr _ docs ',' FULL ' ) )。SYSDATE、' SYSDATE 1';
commit;
结束;
其中,第一个作业的sysdate(1/24/4 )是指每15分钟同步一次,第二个作业的SYSDATE 1是指每隔一天进行一次完全优化。 具体的时间间隔取决于APP应用的需要
6 .索引重建
重建索引时,原始索引将被删除并重新生成。 需要时间。
重建的语法如下:
alterindexinx _ custom info _ addr _ docs rebuild;
根据一些家庭在互联网上的体验,oracle的索引重建速度也相对较快。 一个家庭说:
Oracle全文搜索的索引和维护速度远远快于ms sql server。 为笔者65万条记录的一个表编制索引只需要20分钟,同步一次只需要1分钟。
因此,也可以考虑用job的方法定期重建索引。
参考资料:
1,http://blog.csdn.net/yuren Jia/archive/2007/04/08/1556306.aspx
2,3358 topic.csdn.net/u/2008 01 17/23/34004 f4a-4989-47ef-8764-0 b 7e3BF 737 a7.html
3,http://ten we.com/tech/database/Oracle/200702/content _ 561 _4. shtml
4,http://www.knowsky.com/389357.html
5,http://jy DMT.itpub.net/post/468/195520
6,http://BBS.zdnet.com.cn/Archiver/tid-120474.html
7,http://BBS.51cto.com/Archiver/tid-26270.html
8,http://Oracle.chinaitlab.com/exploit ure/720104 _3. html
9,http://www.33 kuai.cn/html/shujuku/2008 01 26/5314 _2. html
10,http://www.xrss.cn/dev/database/20084218963.html