oracle 索引失效问题

lironghui90734 2008-12-29 10:28:56
一张表,主键 YSFYB_ID ,三个索引 DYXSXXBID ,SFXMDMB_ID,DYXSXXB
SQL> desc ysfyb
Name Type
---------- -------------
YSFYB_ID NUMBER
NDMB_ID NUMBER
XQDMB_ID NUMBER
DYXSXXBID NUMBER
SFXMDMB_ID NUMBER
DYXSXXB VARCHAR2(20)

sql语句1:
select * from ysfyb where sfxmdmb_id in (1,2,3) and dyxsxxb in ('aa','bb') and dyxsxxbid in (1,2,3,4,5,6....) 使用了索引扫描

sql语句2:
select * from ysfyb where sfxmdmb_id in (1,2,3) and dyxsxxb in ('aa','bb') and dyxsxxbid in (select xsid from aa where zydmb_id=1 and xbdmb_id=1)
索引失效,没有用索引查询

请问如何修改 sql语句2 在可以通过子查询的情况下使用索引查询



...全文
228 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lironghui90734 2008-12-29
  • 打赏
  • 举报
回复
哦,忘记分析表了,二楼剑圣兄弟,你说的有效,解决了,谢谢
lironghui90734 2008-12-29
  • 打赏
  • 举报
回复
谢谢二楼的剑圣兄弟,但是用 exists 试过了,仍然是全表扫描,没有用到索引
范佩西_11 2008-12-29
  • 打赏
  • 举报
回复
select *
from ysfyb
where sfxmdmb_id in (1, 2, 3)
and dyxsxxb in ('aa', 'bb')
and exists (select 1
from aa
where zydmb_id = 1
and xbdmb_id = 1
and ysfyb.dyxsxxbid = xsid)

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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