解决模糊查询速度慢问题(ORACLE)

ORACLE 专栏收录该内容
8 篇文章 0 订阅
     一个困扰我良久的问题,在今天早上8:41分时基本解决。
     数据库的数据量非常庞大,查询速度极慢,建立索引后“=”搜索速度问题解决,但是在搜索的sql语句中大部分是用like,可是like '%XXX%'是不使用索引的,而like 'XXX%'则经过索引,求教曾经的老师、高级程序员也无用,在网站上搜索、求助,最终锁定两种办法:1.全文索引。2.搜索引擎。 但据说全文索引的速度也不尽人意,对GBK的支持也有些问题,暂且研究搜索引擎,但发现搜索引擎不是一时半刻可以研究透彻的东西,只得转向全文索引,下面是建立全文索引的方法:
     (在某个表上创建文本索引之前,如果该表上没有主键,必须为该表创建一个主键)
create index 文本索引名
       on 表名(要建文本索引的表字段)
indextype is ctxsys.context;

在创建文本索引用时比较长,要耐心等待...
创建完成后查询测试:select * from table where CONTAINS(USERNAME,'可可')>0
     速度果然大幅提升,心想多天来的问题终于得到解决。但没想到,在搜索结果较多的时候.Count累加的速度慢了下来,索引也全部建立,解决办法至今没有发现,昨晚躺在床上翻来覆去,想到很多像论坛的搜索中都限制了搜索的关键字个数,这样可以有效的控制查询结果的数量,可以限制搜索时输入的关键字最少不得少于四个汉字。但转眼一想不可行,因为库中数据很有可能只有两个字、三个字的名称,这样会造成搜索结果不可靠...
     今天早上一大早就来到公司,打开昨天在网上求助的帖子,回答人确实不少,提出了各种各样的方法,可是我都曾尝试过,都是行不通的,也许这个特殊项目的要求比较特别。静下心仔细想想,我在See页面需要的查询其实大体可分为两种,小范围搜索和大范围搜索,在以前的小范围搜索中速度是合格的,但是最近加入大范围搜索,则出现以下问题,但是加入全文索引后,大范围的速度大幅度提高了,而小范围的count却出奇的慢。分析完成,很明显,在小范围搜索的时候用普搜(同时可限制不得只输入一个字),而大范围的时候用全文索引进行搜索。立即按照此方案进行修改,终于...我希望的效果基本出现了。(但是大范围搜索时,速度较小范围略慢,但应无大碍) 心情大爽!本一度以为要放弃此问题的.但最终寻得了解决办法..虽然没有《越狱》那样惊险刺激,但解决问题后的心情也的确够劲。
     接下来还有一个个的小问题,解决它们只是时间问题了...
  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

lichengxian

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值