oracle 索引问题!求解!求帮助!!

yue547283947 2011-08-03 06:06:07
table1(id,type,info) id字段:是guid 字符串 type字段:字符串类型 如 '010000' info字段: varchar2(2000)

aaaaq 010000 阿萨德212饿阿萨德asd。。。。。

bbbas 030000 阿斯发达省份adf23。。。。

table2(id,name)id字段:是guid 字符串 name字段:varchar2(100)

aaaaq 阿斯达岁的

bbbas 阿萨德


每个表的数据在400万以上

问题 1
select * from table1 where type='010000' and info like '%阿斯%' 这个查询执行很慢

我找资料说用全文索引 然后
select * from table1 where contains(info, '阿斯')>0 很快 但加上 and type='010000' 速度又慢了

我给 type加个索引 还是很慢 请问怎么办??

问题2
select t.type,d.name FROM table1 t,table2 d where t.id=d.id and contains(t.info ,'人民')>0
这样连接查询超级慢

怎么办?

求助。。。。求大家给点解决办法 小弟在此谢过了。
...全文
152 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yue547283947 2011-08-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ulihss 的回复:]
最好不要用like因为这是导致查询速度慢的最主要的原因。
如果数据量大的话那查询就会特别的慢。
[/Quote]

需求啊。。。。需求要 我能怎么办呢?
Kobayashi 2011-08-05
  • 打赏
  • 举报
回复
最好不要用like因为这是导致查询速度慢的最主要的原因。
如果数据量大的话那查询就会特别的慢。
yue547283947 2011-08-05
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ulihss 的回复:]
如果你用全文索引那这个索引相当于没有建。。
速度还是会和以前的速度是一样的。。
不会有减少。。。
你建索引要根据你的Where后面的条件来确定的。
[/Quote]

like '%啊啊%'这样的where条件 我能怎么办? 前提是改成这样都不行 like '啊啊%'
Kobayashi 2011-08-05
  • 打赏
  • 举报
回复
如果你用全文索引那这个索引相当于没有建。。
速度还是会和以前的速度是一样的。。
不会有减少。。。
你建索引要根据你的Where后面的条件来确定的。
yue547283947 2011-08-05
  • 打赏
  • 举报
回复
问题还没解决 不能就这么沉了
hanzs 2011-08-05
  • 打赏
  • 举报
回复
既然允许用户 like '%啊啊%' 这样查询,那就只能牺牲性能

oracle不是万能的,有时也要业务上变通下的~~~
yue547283947 2011-08-05
  • 打赏
  • 举报
回复



大牛们呢?
yue547283947 2011-08-04
  • 打赏
  • 举报
回复


全文索引 位图索引 2个索引一起用为什么没效果?
Kobayashi 2011-08-04
  • 打赏
  • 举报
回复
你这样只把效果拿出来我们是解决不了问题的。只能大致的知道一些。你要把你的SQL执行之后的结果拿出来。这样我们才好分析问题。因为你们的表的设计都不知道。。问题怎么解决?
灰哥 2011-08-03
  • 打赏
  • 举报
回复
问题 1
select * from table1 where type='010000' and info like '%阿斯%' 这个查询执行很慢

我找资料说用全文索引 然后
select * from table1 where contains(info, '阿斯')>0 很快 但加上 and type='010000' 速度又慢了

我给 type加个索引 还是很慢 请问怎么办??

问题2
select t.type,d.name FROM table1 t,table2 d where t.id=d.id and contains(t.info ,'人民')>0
这样连接查询超级慢

第一个,你的写法是'%=阿斯%' ,你这样写就算有索引oracle也不会给你走索引的,如果用like模糊查询oracle只对like '阿斯%'这样的语句才会进行索引检索数据。
问题2你如果在id上加了索引还没效果那就还真得好好看看了。
woodqlin 2011-08-03
  • 打赏
  • 举报
回复
先看看oracle的执行计划,看看查询时索引有没有生效
Rotel-刘志东 2011-08-03
  • 打赏
  • 举报
回复
1、在type字段建立索引,是必须的。
2、info字段建立索引。
yue547283947 2011-08-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 benchim888 的回复:]
问题1
如果你的 type 字段中重复记录很多的话,建立一个 bit map 索引,可以提高查询速度。

问题2
T2表的ID字段上建立一个索引。
[/Quote]

第一个效果不明显 第二个几乎没效果。。。
BenChiM888 2011-08-03
  • 打赏
  • 举报
回复
问题1
如果你的 type 字段中重复记录很多的话,建立一个 bit map 索引,可以提高查询速度。

问题2
T2表的ID字段上建立一个索引。

17,086

社区成员

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

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