Oracle多一个条件慢了5分钟

pc_user 2012-10-02 11:27:28
SELECT TO_CHAR(PO.CREATE_DATE,'YYYY-MM-DD') AS ORD_DATE,PO.SALES_ORDER_ID AS ORDER#,PO.DOMS_STATUS AS ST,POL.BASE_TYPE AS PLATFM,LS.QTY*PA.QTY*POL.QTY AS QTY FROM OFSPP.PROD_ORDER_LINE POL,OFSPP.LINE_SKU LS,OFSPP.PART PA,OFSPP.PROD_ORDER PO
WHERE POL.PROD_ORDER_NUM = LS.PROD_ORDER_NUM
AND POL.LINE_NUM = LS.LINE_NUM
AND LS.LINE_SKU_SEQ = PA.LINE_SKU_SEQ
AND PO.PROD_ORDER_NUM = POL.PROD_ORDER_NUM
AND PO.FACILITY BETWEEN 'CCC2' AND 'CCC4'
AND PA.PART_NUM = 'TWPN2'
上面的这些条件用了17秒可以完成查询,但是多加了一个下面的条件竟然要5分多钟才能出结果,
AND PO.DOMS_STATUS IN ('IP,'PP')
谁能帮我看看需要啥改进的...
...全文
1137 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxwustc 2012-11-09
  • 打赏
  • 举报
回复
兄弟,我也碰到了这个问题,查询条件多于4个,就算是五个条件一模一样也会慢几十倍,不知道为什么。
wangpengpengwang 2012-11-01
  • 打赏
  • 举报
回复
如果数据量大得话怎么能进行全表扫描啊?IN就进行全表扫描,可定快不了。
pc_user 2012-10-29
  • 打赏
  • 举报
回复
doms_status是表ofspp.PROD_ORDER列名
UPC子夜 2012-10-29
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 的回复:]

是不是这样写的? 好像查询速度没有改善...
select /*+index(doms_status PROD_ORDER_IDX3)*/ * from ofspp.PROD_ORDER
[/Quote]

index()括号中间是表明 空格 索引名 你的doms_status是什么东西啊
还有 如果这样也不走索引 估计oracle就认为不应该走索引 那就只能找dba优化了
Tomas_Tao 2012-10-27
  • 打赏
  • 举报
回复
使用優化工具進行優化,優化工具會提供最佳方案.
pc_user 2012-10-25
  • 打赏
  • 举报
回复
问题依旧等待改善中
yf520gn 2012-10-23
  • 打赏
  • 举报
回复
hints!!!!
book523 2012-10-23
  • 打赏
  • 举报
回复
我说的几个方法有没有试一试?
pc_user 2012-10-23
  • 打赏
  • 举报
回复
请教那该如何填写...
yf520gn 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 的回复:]
是不是这样写的? 好像查询速度没有改善...
select /*+index(doms_status PROD_ORDER_IDX3)*/ * from ofspp.PROD_ORDER
[/Quote]
我杂感觉你HINT是不是写错了?
pc_user 2012-10-23
  • 打赏
  • 举报
回复
是不是这样写的? 好像查询速度没有改善...
select /*+index(doms_status PROD_ORDER_IDX3)*/ * from ofspp.PROD_ORDER
UPC子夜 2012-10-23
  • 打赏
  • 举报
回复
select /*+index(tablename indexname)*/ * from table
pc_user 2012-10-22
  • 打赏
  • 举报
回复
好像有找到索引,但该如何去引用索引呢,好像一直都不生效的哦
wangkui1990 2012-10-20
  • 打赏
  • 举报
回复
建议你在写where 后面的条件时,先把排除大量数据的条件放在前面,还有最好不要用AND PO.DOMS_STATUS IN ('IP,'PP'),这样会对全表进行查询,你可以在查询的列建个索引,还有用PO.DOMS_STATUS='IP' or PO.DOMS_STATUS='pp',并把这个放在 where 的后面,这样可能会快点,你试试。。。
pc_user 2012-10-19
  • 打赏
  • 举报
回复
INFO INDEX_NAME OWNER UNIQUE COLUMN_NAME ORDER POSITION LOGGING DEGREE
PLAIN PROD_ORDER_FK2_IDX OFSPP N STATUS_CODE Asc 1 YES 1
PLAIN PROD_ORDER_FK3_IDX OFSPP N SALES_ORDER_ID Asc 1 YES 1
PLAIN PROD_ORDER_FK3_IDX OFSPP N BUID Asc 2 YES 1
PLAIN PROD_ORDER_FK4_IDX OFSPP N CHANNEL_CODE Asc 1 YES 1
PLAIN PROD_ORDER_IDX1 OFSPP N CREATE_DATE Asc 1 YES 1
PLAIN PROD_ORDER_IDX2 OFSPP N MODIFY_DATE Asc 1 YES 1
PLAIN PROD_ORDER_IDX3 OFSPP N DOMS_STATUS Asc 1 YES 1
PLAIN PROD_ORDER_IDX4 OFSPP N CHANNEL_HOLD Asc 1 YES 1
PLAIN PROD_ORDER_IDX4 OFSPP N HELD_CODE Asc 2 YES 1
PLAIN PROD_ORDER_PK OFSPP Y PROD_ORDER_NUM Asc 1 YES 1
PLAIN PROD_ORDER_UNIQUE_CHANNEL OFSPP Y SALES_ORDER_ID Asc 1 YES 1
PLAIN PROD_ORDER_UNIQUE_CHANNEL OFSPP Y BUID Asc 2 YES 1
PLAIN PROD_ORDER_UNIQUE_CHANNEL OFSPP Y CHANNEL_CODE Asc 3 YES 1
pc_user 2012-10-19
  • 打赏
  • 举报
回复
在表OFSPP.PROD_ORDER PO中查到有索引,索引名:PROD_ORDER_IDX3 对应的DOMS_STATUS数据
我该如何利用索引来查询这个条件 AND PO.DOMS_STATUS IN ('IP,'PP')
soar_angel 2012-10-19
  • 打赏
  • 举报
回复
那个字段没有索引,可能加了这个条件之后就全表扫描了。
pc_user 2012-10-18
  • 打赏
  • 举报
回复
OFSPP.PROD_ORDER_LINE POL, 80000条记录
OFSPP.LINE_SKU LS, 650000条记录
OFSPP.PART PA, 1650000条记录
OFSPP.PROD_ORDER PO 50000条记录
pc_user 2012-10-18
  • 打赏
  • 举报
回复
Plan
SELECT STATEMENT ALL_ROWSCost: 14,325 Bytes: 90,810 Cardinality: 1,009
12 NESTED LOOPS
10 NESTED LOOPS Cost: 14,325 Bytes: 90,810 Cardinality: 1,009
8 NESTED LOOPS Cost: 10,743 Bytes: 100,240 Cardinality: 1,790
5 NESTED LOOPS Cost: 7,161 Bytes: 68,020 Cardinality: 1,790
2 TABLE ACCESS BY GLOBAL INDEX ROWID TABLE OFSPP.PART Cost: 1,789 Bytes: 28,640 Cardinality: 1,790 Partition #: 5 Partition access computed by row location
1 INDEX RANGE SCAN INDEX OFSPP.PART_IDX2 Cost: 22 Cardinality: 1,790
4 TABLE ACCESS BY GLOBAL INDEX ROWID TABLE OFSPP.LINE_SKU Cost: 3 Bytes: 22 Cardinality: 1 Partition #: 7 Partition access computed by row location
3 INDEX UNIQUE SCAN INDEX (UNIQUE) OFSPP.LINE_SKU_PK Cost: 2 Cardinality: 1
7 TABLE ACCESS BY GLOBAL INDEX ROWID TABLE OFSPP.PROD_ORDER_LINE Cost: 2 Bytes: 18 Cardinality: 1 Partition #: 9 Partition access computed by row location
6 INDEX UNIQUE SCAN INDEX (UNIQUE) OFSPP.PROD_ORDER_LINE_PK Cost: 1 Cardinality: 1
9 INDEX UNIQUE SCAN INDEX (UNIQUE) OFSPP.PROD_ORDER_PK Cost: 1 Cardinality: 1
11 TABLE ACCESS BY GLOBAL INDEX ROWID TABLE OFSPP.PROD_ORDER Cost: 2 Bytes: 34 Cardinality: 1 Partition #: 12 Partition access computed by row location
小灰狼W 2012-10-18
  • 打赏
  • 举报
回复
给出加这个条件前后的执行计划
检查表和索引的统计信息
加载更多回复(19)

17,082

社区成员

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

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