sos!!oracle全表搜索---在线等待!!!!

wyzwhp 2005-05-24 11:30:58
各位高手,我现在想对一个表进行模糊查询,可是我用like查询的是时候很慢,有没有更好的办法能让他更快点?现在这个表有8000条记录,每个字段长度为4000。
...全文
267 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxc 2005-05-26
  • 打赏
  • 举报
回复
create index idx_ctx_表名_字段列表 on 表名(字段列表)
indextype is CTXSYS.CONTEXT
;

select * from 表名 where contains(字段名,'查询内容') > 0;

wyzwhp 2005-05-26
  • 打赏
  • 举报
回复
各位仁兄,能不能说的详细一点?
zakat 2005-05-26
  • 打赏
  • 举报
回复
如果你是前后都有%,那么是使用不到索引的。
建议你使用 jxc(GameHeart)楼上的方法,建立Oracle Te xt索引(这是9i的叫法,8i叫interMedia)。

这里有个比较:
不使用Oracle Text的文本搜索可能会出现问题。例如,如果你不用Oracle Te xt索引,而要在NAME列搜索单词“rice”,你可能按如下所示使用操作符LIKE或函数INSTR():
SELECT id, name
FROM recipes
WHERE UPPER(name) LIKE '%RICE%';


SELECT id, name
FROM recipes
WHERE INSTR(UPPER(name), 'RICE') > 0;
UPPER函数的使用,是在忽略大小写的情况下查找所有出现的“rice”所必须的,但会导致name列上的标准Oracle索引(BTREE)被忽略。而且,在name列使用标准索引要求你从被索引的列的开始就要匹配搜索术语。也就是说,要使用标准索引找到示例数据第三行中的“Rice”,查询的谓项必须如下所示:
WHERE name LIKE 'Spanish Rice%'
它与搜索“rice”完全不同,然而它阐明了如何为了让Oracle选择一个BT REE 索引而将不得不限制你的搜索。使用上述方法中的一个查找一文本串可能是一冗长的任务。相反,Oracle Text搜索术语“rice”(默认忽略大小写)时由SELECT语句使用Oracle Tex t特殊的CONTAINS操作符来完成。
SELECT id, name
FROM recipes
WHERE CONTAINS (name, 'rice') > 0;
CONTAINS的参数是正在被搜索的列名称,上面例子的Text Query Expression(文本查询表达式)包含了一个术语(“rice”)和一个可选用的第三方参数(在这篇文章联机版的分数查询例子中介绍了可选用参数)。CONTAINS返回一个显示分数的数字,它可以是0到 100之间的任何值。如果一篇文档一点也不能匹配搜索标准,它收到的分数为0,所以谓项WHE RE (name, 'rice') >0将查找与标准相匹配的文档,即使是以最微弱的方式相匹配。参见“ Keeping Score-the Salton Algorithm”,获得关于Oracle Text引擎使用的计分算法方面的更多信息。
jxc 2005-05-24
  • 打赏
  • 举报
回复
用like ,如果%在字符后面,有可能用索引,如果%在字符前面,则可以建立函数索引.
如果字符两侧都有%,你需要考虑用 InterMedia

leborety 2005-05-24
  • 打赏
  • 举报
回复
8000条不多吧
如果你的单个字段的模糊查询,没什么好办法了
有索引的查询当然最好
Dr_Jones 2005-05-24
  • 打赏
  • 举报
回复
建索引

然后建议用union查找
wyzwhp 2005-05-24
  • 打赏
  • 举报
回复
楼上的各位仁兄,我用的是两边都有%的查询,这样是不是更慢?jxc(GameHeart)这位仁兄能不能详细的说明一下InterMedia?

rolandzhang()这位仁兄,你说的建索引可能也不起作用吧,like本身就是全表查询,建不建索引的效果不会太明显
rolandzhang 2005-05-24
  • 打赏
  • 举报
回复
在where 后面的条件字段上建立合适的索引,会增加查询速度。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧