Sql 我想微调一个查询,它在数据库上花费了3-5个多小时
我想对下面的查询进行微调,这需要很长时间才能在数据库上运行。查询如下:Sql 我想微调一个查询,它在数据库上花费了3-5个多小时,sql,oracle,oracle11g,oracle10g,query-performance,Sql,Oracle,Oracle11g,Oracle10g,Query Performance,我想对下面的查询进行微调,这需要很长时间才能在数据库上运行。查询如下: SELECT RSE.RSE_CD_D_BRANCH.FIN_DIVISION_CODE, RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.BUYER, RSE.RSE_CD_D_PRODUCT_FLAT.BUY_LINE, RSE.RSE_CD_D_BRANCH.FIN_BRANCH_CODE, RSE.RSE_CD_D_BRANCH.BRANCH_NUMBER, RSE.RSE_C
SELECT
RSE.RSE_CD_D_BRANCH.FIN_DIVISION_CODE,
RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.BUYER,
RSE.RSE_CD_D_PRODUCT_FLAT.BUY_LINE,
RSE.RSE_CD_D_BRANCH.FIN_BRANCH_CODE,
RSE.RSE_CD_D_BRANCH.BRANCH_NUMBER,
RSE.RSE_CD_D_PRODUCT_FLAT.PRODUCT_NUMBER,
NVL(RSE.RSE_CD_D_PRODUCT_FLAT.PRODUCT_DESC,RSE.RSE_CD_D_PRODUCT_FLAT.PRODUCT_DESC_LONG),
SUM(RSE.RSE_IV_F_VALUATION_SV.ON_HAND_QTY),
SUM(RSE.RSE_IV_F_VALUATION_SV.COMMITTED_QTY),
SUM(RSE.RSE_IV_F_VALUATION_SV.COMMITTED_QTY_RAW),
SUM(RSE.RSE_IV_F_VALUATION_SV.DEMAND_PER_DAY_ECL_HUB),
SUM(RSE.RSE_IV_F_VALUATION_SV.INBOUND_RECEIPT_QTY),
RSE.RSE_IV_F_VALUATION_SV.BRANCH_STOCK_FLAG,
RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.TOP_200_ITEM_FLAG,
SUBSTR(RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.FULL_ISO,3,2),
RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.ORDER_PNT_XFER_PNT
FROM
RSE.RSE_CD_D_BRANCH,
RSE.RSE_CD_D_PRODUCT_BRANCH_CUR,
RSE.RSE_CD_D_PRODUCT_FLAT,
RSE.RSE_IV_F_VALUATION_SV,
RSE.RSE_CD_D_CALENDAR
WHERE
( RSE.RSE_CD_D_BRANCH.DW_BRANCH_ID=RSE.RSE_IV_F_VALUATION_SV.DW_BRANCH_ID )
AND ( RSE.RSE_CD_D_CALENDAR.CALENDAR_DATE=RSE.RSE_IV_F_VALUATION_SV.VALUATION_DATE )
AND ( RSE.RSE_CD_D_PRODUCT_FLAT.PRODUCT_ID=RSE.RSE_IV_F_VALUATION_SV.PRODUCT_ID )
AND ( RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.PRODUCT_ID=RSE.RSE_IV_F_VALUATION_SV.PRODUCT_ID and RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.DW_BRANCH_ID=RSE.RSE_IV_F_VALUATION_SV.DW_BRANCH_ID )
AND ( RSE.RSE_IV_F_VALUATION_SV.SSO_ID= '570000018' )
AND
(
RSE.RSE_CD_D_CALENDAR.DAY_RELATIVE = 0
AND
RSE.RSE_CD_D_BRANCH.BRANCH_NUMBER NOT IN ( '1167','2305','1581','3129','1075','1078','7995' )
AND
RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.ORDER_PNT_XFER_PNT > 0
AND
RSE.RSE_IV_F_VALUATION_SV.LOCATION_TYPE_DESC IN ( 'CONSIGNMENT','STOCK','PREVIEW QUEUE','TAGGED' )
AND
CASE WHEN RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.BASE_STOCK_FLAG = '0' THEN 'N' WHEN RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.BASE_STOCK_FLAG = '1' THEN 'Y' ELSE 'AUTO' END IN ( 'AUTO','Y' )
AND
RSE.RSE_CD_D_PRODUCT_FLAT.PRODUCT_STATUS_DESC IN ( 'Stock' )
AND
RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.FULL_ISO IN ( 'S.A','S.A1','S.A2','S.A3','S.A4','S.B','S.B1','S.B2','S.B3','S.B4','S.NA','S.NB','S.NS','S.S','S.S1','S.S2','S.S3','S.S4','S.T2','S.T3' )
)
GROUP BY
RSE.RSE_CD_D_BRANCH.FIN_DIVISION_CODE,
RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.BUYER,
RSE.RSE_CD_D_PRODUCT_FLAT.BUY_LINE,
RSE.RSE_CD_D_BRANCH.FIN_BRANCH_CODE,
RSE.RSE_CD_D_BRANCH.BRANCH_NUMBER,
RSE.RSE_CD_D_PRODUCT_FLAT.PRODUCT_NUMBER,
NVL(RSE.RSE_CD_D_PRODUCT_FLAT.PRODUCT_DESC,RSE.RSE_CD_D_PRODUCT_FLAT.PRODUCT_DESC_LONG),
RSE.RSE_IV_F_VALUATION_SV.BRANCH_STOCK_FLAG,
RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.TOP_200_ITEM_FLAG,
SUBSTR(RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.FULL_ISO,3,2),
RSE.RSE_CD_D_PRODUCT_BRANCH_CUR.ORDER_PNT_XFER_PNT
HAVING
SUM(RSE.RSE_IV_F_VALUATION_SV.DEMAND_PER_DAY_ECL_HUB) > 0;
以下是解释计划:
Plan hash value: 2631612456
-----------------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
-----------------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 215 | 479K (1)| 01:35:59 | | |
|* 1 | FILTER | | | | | | | |
| 2 | HASH GROUP BY | | 1 | 215 | 479K (1)| 01:35:59 | | |
| 3 | NESTED LOOPS | | | | | | | |
| 4 | NESTED LOOPS | | 1 | 215 | 479K (1)| 01:35:59 | | |
| 5 | NESTED LOOPS | | 1 | 116 | 479K (1)| 01:35:59 | | |
| 6 | NESTED LOOPS | | 1 | 97 | 479K (1)| 01:35:59 | | |
|* 7 | HASH JOIN | | 1 | 82 | 479K (1)| 01:35:58 | | |
| 8 | TABLE ACCESS BY INDEX ROWID | RSE_CD_D_CALENDAR | 1 | 13 | 2 (0)| 00:00:01 | | |
|* 9 | INDEX RANGE SCAN | RSE_CD_D_CALENDAR_I5 | 1 | | 1 (0)| 00:00:01 | | |
| 10 | NESTED LOOPS | | | | | | | |
| 11 | NESTED LOOPS | | 173 | 11937 | 479K (1)| 01:35:58 | | |
| 12 | INLIST ITERATOR | | | | | | | |
|* 13 | TABLE ACCESS BY INDEX ROWID | RSE_CD_D_PRODUCT_BRANCH_CUR | 147 | 4263 | 48731 (1)| 00:09:45 | | |
|* 14 | INDEX RANGE SCAN | RSE_CD_D_PROD_BRANC_CUR_I2 | 208K| | 602 (1)| 00:00:08 | | |
| 15 | PARTITION RANGE ALL | | 1 | | 2932 (1)| 00:00:36 | 1 | 1465 |
|* 16 | INDEX RANGE SCAN | RSE_IV_F_VALUATION_I5 | 1 | | 2932 (1)| 00:00:36 | 1 | 1465 |
|* 17 | TABLE ACCESS BY LOCAL INDEX ROWID| RSE_IV_F_VALUATION | 1 | 40 | 2933 (1)| 00:00:36 | 1 | 1 |
|* 18 | TABLE ACCESS BY INDEX ROWID | RSE_IV_D_SECURITY_BRANCH | 1 | 15 | 5 (0)| 00:00:01 | | |
|* 19 | INDEX RANGE SCAN | RSE_IV_D_SECURITY_BRANCH_I2 | 580 | | 1 (0)| 00:00:01 | | |
|* 20 | TABLE ACCESS BY INDEX ROWID | RSE_CD_D_BRANCH | 1 | 19 | 1 (0)| 00:00:01 | | |
|* 21 | INDEX UNIQUE SCAN | RSE_CD_D_BRANCH_PK | 1 | | 0 (0)| 00:00:01 | | |
|* 22 | INDEX UNIQUE SCAN | RSE_CD_PRODUCT_FLAT_PK | 1 | | 1 (0)| 00:00:01 | | |
|* 23 | TABLE ACCESS BY INDEX ROWID | RSE_CD_D_PRODUCT_FLAT | 1 | 99 | 2 (0)| 00:00:01 | | |
-----------------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(SUM("A"."DEMAND_PER_DAY_ECL_HUB")>0)
7 - access("RSE_CD_D_CALENDAR"."CALENDAR_DATE"="A"."VALUATION_DATE")
9 - access("RSE_CD_D_CALENDAR"."DAY_RELATIVE"=0)
13 - filter("RSE_CD_D_PRODUCT_BRANCH_CUR"."ORDER_PNT_XFER_PNT">0 AND (CASE "RSE_CD_D_PRODUCT_BRANCH_CUR"."BASE_STOCK_FLAG"
WHEN '0' THEN 'N' WHEN '1' THEN 'Y' ELSE 'AUTO' END ='AUTO' OR CASE "RSE_CD_D_PRODUCT_BRANCH_CUR"."BASE_STOCK_FLAG" WHEN '0'
THEN 'N' WHEN '1' THEN 'Y' ELSE 'AUTO' END ='Y'))
14 - access("RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.A' OR "RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.A1' OR
"RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.A2' OR "RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.A3' OR
"RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.A4' OR "RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.B' OR
"RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.B1' OR "RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.B2' OR
"RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.B3' OR "RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.B4' OR
"RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.NA' OR "RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.NB' OR
"RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.NS' OR "RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.S' OR
"RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.S1' OR "RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.S2' OR
"RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.S3' OR "RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.S4' OR
"RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.T2' OR "RSE_CD_D_PRODUCT_BRANCH_CUR"."FULL_ISO"='S.T3')
16 - access("RSE_CD_D_PRODUCT_BRANCH_CUR"."DW_BRANCH_ID"="A"."DW_BRANCH_ID" AND
"RSE_CD_D_PRODUCT_BRANCH_CUR"."PRODUCT_ID"="A"."PRODUCT_ID")
17 - filter("A"."LOCATION_TYPE_DESC"='CONSIGNMENT' OR "A"."LOCATION_TYPE_DESC"='PREVIEW QUEUE' OR
"A"."LOCATION_TYPE_DESC"='STOCK' OR "A"."LOCATION_TYPE_DESC"='TAGGED')
18 - filter("B"."SSO_ID"='570000018')
19 - access("A"."DW_BRANCH_ID"="B"."DW_BRANCH_ID")
20 - filter("RSE_CD_D_BRANCH"."BRANCH_NUMBER"<>'1167' AND "RSE_CD_D_BRANCH"."BRANCH_NUMBER"<>'2305' AND
"RSE_CD_D_BRANCH"."BRANCH_NUMBER"<>'1581' AND "RSE_CD_D_BRANCH"."BRANCH_NUMBER"<>'3129' AND
"RSE_CD_D_BRANCH"."BRANCH_NUMBER"<>'1075' AND "RSE_CD_D_BRANCH"."BRANCH_NUMBER"<>'1078' AND
"RSE_CD_D_BRANCH"."BRANCH_NUMBER"<>'7995')
21 - access("RSE_CD_D_BRANCH"."DW_BRANCH_ID"="A"."DW_BRANCH_ID")
22 - access("RSE_CD_D_PRODUCT_FLAT"."PRODUCT_ID"="A"."PRODUCT_ID")
23 - filter("RSE_CD_D_PRODUCT_FLAT"."PRODUCT_STATUS_DESC"='Stock')
计划哈希值:2631612456
-----------------------------------------------------------------------------------------------------------------------------------------
|Id |操作|名称|行|字节|成本(%CPU)|时间| Pstart | Pstop|
-----------------------------------------------------------------------------------------------------------------------------------------
|0 | SELECT语句| 1 | 215 | 479K(1)| 01:35:59 ||
|*1 |过滤器| | | | | ||
|2 | HASH GROUP BY | 1 | 215 | 479K(1)| 01:35:59 ||
|3 |嵌套循环| | | | | | ||
|4 |嵌套循环| 1 | 215 | 479K(1)| 01:35:59 ||
|5 |嵌套循环| 1 | 116 | 479K(1)| 01:35:59 ||
|6 |嵌套循环| 1 | 97 | 479K(1)| 01:35:59 ||
|*7 |散列连接| 1 | 82 | 479K(1)| 01:35:58 ||
|8 |按索引ROWID访问表| RSE|U CD|U日历| 1 | 13 | 2(0)| 00:00:01 ||
|*9 |索引范围扫描| RSE|U CD|U日历| I5 | 1 | 1(0)| 00:00:01 ||
|10 |嵌套循环| | | | | | ||
|11 |嵌套循环| 173 | 11937 | 479K(1)| 01:35:58 ||
|12 |内联迭代器| | | | | ||
|*13 |按索引行ID访问表| RSE | CD | U D | U产品| U CUR | 147 | 4263 | 48731(1)| 00:09:45 ||
|*14 |索引范围扫描| RSE | CD | U D | U生产部门| CUR | I2 | 208K | 602(1)| 00:00:08 ||
|15 |分区范围全部| | 1 | | 2932(1)| 00:00:36 | 1 | 1465|
|*16 |索引范围扫描| RSE | IV | F | U评估| I5 | 1 | 2932(1)| 00:00:36 | 1 | 1465|
|*17 |按本地索引ROWID访问表| RSE|IV|F|U估值| 1 | 40 | 2933(1)| 00:00:36 | 1 | 1|
|*18 |按索引ROWID访问表| RSE|U IV|U D|U SECURITY|U BRANCH | 1 | 15 | 5(0)| 00:00:01 ||
|*19 |索引范围扫描| RSE | IV | U D | U安全| U I2 | 580 | 1(0)| 00:00:01 ||
|*20 |按索引行ID访问表| RSE | U CD | U D | U分支| 1 | 19 | 1(0)| 00:00:01 ||
|*21 |索引唯一扫描| RSE | CD | D | U分支| PK | 1 | | 0(0)| 00:00:01 ||
|*22 |索引唯一扫描| RSE | CD |产品|平面| PK | 1 | 1(0)| 00:00:01 ||
|*23 |按索引ROWID访问表| RSE | CD | U D | U产品|平面| 1 | 99 | 2(0)| 00:00:01 ||
-----------------------------------------------------------------------------------------------------------------------------------------
谓词信息(由操作id标识):
---------------------------------------------------
1-过滤器(总和(“A”。“每日需求量”\u ECL\u中心”)>0)
7-访问(“RSE_CD_D_日历”,“日历日期”=“A”,“估价日期”)
9-访问(“RSE_CD_D_日历”,“相对日期”=0)
13-过滤器(“RSE\U CD\U D\U产品\U分支机构”.“订单\U PNT\U XFER\U PNT”>0和(案例“RSE\U CD\U D\U产品\U分支机构”.“基本库存\U标志”
当“0”时,当“1”时,当“N”时,当“Y”时,当“1”时,当“Y”时,当“自动”时,当“RSE\U CD\U D\U产品\U分支机构\U CUR”时,当“0”时,当“基本库存\U标志”
然后是“N”,当“1”时是“Y”,否则是“AUTO”END='Y'))
14-访问(“RSE_CD_D_产品_分支机构”;“完整ISO”=“S.A”或“RSE_CD_D_产品_分支机构”;“完整ISO”=“S.A1”或
“RSE_CD_D_产品_分支_CUR”。“完整ISO”=“S.A2”或“RSE_CD_D_产品_分支_CUR”。“完整ISO”=“S.A3”或
“RSE_CD_D_产品_分支机构”;“完整ISO”='S.A4'或“RSE_CD_D_产品_分支机构”;“完整ISO”='S.B'或
“RSE_CD_D_产品_分支机构”;“完整ISO”='S.B1'或“RSE_CD_D_产品_分支机构”;“完整ISO”='S.B2'或
“RSE_CD_D_产品_分支机构”;“完整ISO”='S.B3'或“RSE_CD_D_产品_分支机构”;“完整ISO”='S.B4'或
“RSE_CD_D_产品_分支_CUR”。“完整ISO”=“S.NA”或“RSE_CD_D_产品_分支_CUR”。“完整ISO”=“S.NB”或
“RSE_CD_D_产品_分支_CUR”。“完整ISO”=“S.NS”或“RSE_CD_D_产品_分支_CUR”。“完整ISO”=“S.S”或
“RSE_CD_D_产品_分支_CUR”。“完整ISO”=“S.S1”或“RSE_CD_D_产品_分支_CUR”。“完整ISO”=“S.S2”或
“RSE_CD_D_产品_分支_CUR”。“完整ISO”='S.S3'或“RSE_CD_D_产品_分支_CUR”。“完整ISO”='S.S4'或
“RSE_CD_D_产品_分支_CUR”。“完整ISO”='S.T2'或“RSE_CD_D_产品_分支_CUR”。“完整ISO”='S.T3')
16-访问(“RSE_CD_D_产品_分支机构_CUR”。“DW_分支机构_ID”=“A”。“DW_分支机构_ID”和
EXEC DBMS_STATS.gather_schema_stats('SCHEMA_NAME');
(SELECT
SUM(val.ON_HAND_QTY) sum_on_hand_qty,
SUM(val.COMMITTED_QTY) sum_commited_qty,
SUM(val.COMMITTED_QTY_RAW) sum_commited_qty_raw,
SUM(val.DEMAND_PER_DAY_ECL_HUB) sum_demand_per_day_ecl_hub,
SUM(val.INBOUND_RECEIPT_QTY) sum_inbound_receipt_qty,
val.BRANCH_STOCK_FLAG,
val.DW_BRANCH_ID,
val.PRODUCT_ID
FROM RSE.RSE_IV_F_VALUATION_SV val
JOIN RSE.RSE_CD_D_CALENDAR cal ON cal.CALENDAR_DATE=val.VALUATION_DATE AND cal.DAY_RELATIVE = 0
WHERE val.SSO_ID= '570000018' AND val.LOCATION_TYPE_DESC IN ( 'CONSIGNMENT','STOCK','PREVIEW QUEUE','TAGGED' )
GROUP BY val.DW_BRANCH_ID,val.PRODUCT_ID,val.BRANCH_STOCK_FLAG
HAVING SUM(val.DEMAND_PER_DAY_ECL_HUB)>0) sums
--drop table RSE_CD_D_PRODUCT_BRANCH_CUR;
create table RSE_CD_D_PRODUCT_BRANCH_CUR(BASE_STOCK_FLAG varchar2(100));
insert into RSE_CD_D_PRODUCT_BRANCH_CUR select '0' from dual connect by level <= 10;
insert into RSE_CD_D_PRODUCT_BRANCH_CUR select '1' from dual connect by level <= 5000;
insert into RSE_CD_D_PRODUCT_BRANCH_CUR select '2' from dual connect by level <= 5000;
begin
dbms_stats.gather_table_stats(user, 'RSE_CD_D_PRODUCT_BRANCH_CUR');
end;
/
explain plan for
select *
from RSE_CD_D_PRODUCT_BRANCH_CUR
WHERE
CASE
WHEN BASE_STOCK_FLAG = '0' THEN 'N'
WHEN BASE_STOCK_FLAG = '1' THEN 'Y'
ELSE 'AUTO'
END IN ( 'AUTO','Y' );
select * from table(dbms_xplan.display);
Plan hash value: 1579167612
-------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 199 | 398 | 5 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| RSE_CD_D_PRODUCT_BRANCH_CUR | 199 | 398 | 5 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(CASE "BASE_STOCK_FLAG" WHEN '0' THEN 'N' WHEN '1' THEN 'Y' ELSE 'AUTO' END
='AUTO' OR CASE "BASE_STOCK_FLAG" WHEN '0' THEN 'N' WHEN '1' THEN 'Y' ELSE 'AUTO' END
='Y')
select dbms_stats.create_extended_stats(user, 'RSE_CD_D_PRODUCT_BRANCH_CUR', q'{(CASE "BASE_STOCK_FLAG" WHEN '0' THEN 'N' WHEN '1' THEN 'Y' ELSE 'AUTO' END)}')
from dual;
SYS_STU23HKS830RX09S$M3L713_6_
begin
dbms_stats.gather_table_stats(user, 'RSE_CD_D_PRODUCT_BRANCH_CUR');
end;
/
explain plan for
select *
from RSE_CD_D_PRODUCT_BRANCH_CUR
WHERE
CASE
WHEN BASE_STOCK_FLAG = '0' THEN 'N'
WHEN BASE_STOCK_FLAG = '1' THEN 'Y'
ELSE 'AUTO'
END IN ( 'AUTO','Y' );
select * from table(dbms_xplan.display);
Plan hash value: 1579167612
-------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 6673 | 33365 | 5 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| RSE_CD_D_PRODUCT_BRANCH_CUR | 6673 | 33365 | 5 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(CASE "BASE_STOCK_FLAG" WHEN '0' THEN 'N' WHEN '1' THEN 'Y' ELSE 'AUTO' END
='AUTO' OR CASE "BASE_STOCK_FLAG" WHEN '0' THEN 'N' WHEN '1' THEN 'Y' ELSE 'AUTO' END
='Y')
select *
from RSE_CD_D_PRODUCT_BRANCH_CUR
WHERE
CASE
WHEN BASE_STOCK_FLAG = '0' THEN 'N'
WHEN BASE_STOCK_FLAG = '1' THEN 'Y'
ELSE 'AUTO'
END IN ( 'AUTO','Y' );
begin
dbms_stats.gather_table_stats(user, 'RSE_CD_D_PRODUCT_BRANCH_CUR');
end;
/
explain plan for
select *
from RSE_CD_D_PRODUCT_BRANCH_CUR
WHERE
CASE
WHEN BASE_STOCK_FLAG = '0' THEN 'N'
WHEN BASE_STOCK_FLAG = '1' THEN 'Y'
ELSE 'AUTO'
END IN ( 'AUTO','Y' );
select * from table(dbms_xplan.display);
Plan hash value: 1579167612
-------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 10000 | 50000 | 5 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| RSE_CD_D_PRODUCT_BRANCH_CUR | 10000 | 50000 | 5 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter(CASE "BASE_STOCK_FLAG" WHEN '0' THEN 'N' WHEN '1' THEN 'Y' ELSE 'AUTO' END
='AUTO' OR CASE "BASE_STOCK_FLAG" WHEN '0' THEN 'N' WHEN '1' THEN 'Y' ELSE 'AUTO' END
='Y')