请教!下面这个SQL语句该建立怎样的索引?

数据库:9207
操作系统:AIX 5.3
OE_ORDER_HEADERS_ALL    53,752 行数据
OE_ORDER_LINES_ALL         560,136 行数据

SELECT ROUND(NVL(SUM(DECODE(OTL.NAME,
                            '镸-^@M-^@璐ц?-^L',
                            -1,
                            '镸-^@M-^@绁ㄨ?-^L',
                            -1,
                            1) * OOLA.ORDERED_QUANTITY *
                     OOLA.UNIT_SELLING_PRICE),
                 0) / 10000,
             4)
  FROM OE_ORDER_HEADERS_ALL        OOHA,
       OE_ORDER_LINES_ALL          OOLA,
       APPS.OE_LOOKUPS             OL,
       ONT.OE_TRANSACTION_TYPES_TL OTL
WHERE
DECODE(:B6, NULL, '1', CUX_OM_COMMON_PKG.GET_CHANNEL(OL.MEANING, 1, 1)) >=
NVL(:B6, '1')
AND DECODE(:B5, NULL, '1', CUX_OM_COMMON_PKG.GET_CHANNEL(OL.MEANING, 1, 1)) <=
NVL(:B5, '1')
AND DECODE(:B4, NULL, '1', CUX_OM_COMMON_PKG.GET_CHANNEL(OL.MEANING, 2, 1)) >=
NVL(:B4, '1')
AND DECODE(:B3, NULL, '1', CUX_OM_COMMON_PKG.GET_CHANNEL(OL.MEANING, 2, 1)) <=
NVL(:B3, '1')
AND DECODE(:B2, NULL, '1', CUX_OM_COMMON_PKG.GET_CHANNEL(OL.MEANING, 3, 1)) >=
NVL(:B2, '1')
AND DECODE(:B1, NULL, '1', CUX_OM_COMMON_PKG.GET_CHANNEL(OL.MEANING, 3, 1)) <=
NVL(:B1, '1')
AND OOLA.FLOW_STATUS_CODE NOT IN ('ENTERED', 'CANCELLED')
AND SYSDATE BETWEEN NVL(OL.START_DATE_ACTIVE, SYSDATE) AND
NVL(OL.END_DATE_ACTIVE, SYSDATE)
AND TO_NUMBER(DECODE(:B9,
                  '1',
                  SUBSTR(OOHA.ATTRIBUTE9, 6, 2),
                  '2',
                  TO_CHAR(OOHA.ORDERED_DATE, 'MM'),
                  '3',
                  TO_CHAR(OOHA.CREATION_DATE, 'MM'),
                  '4',
                  TO_CHAR(OOLA.REQUEST_DATE, 'mm'))) = :B8
AND TO_NUMBER(DECODE(:B9,
                  '1',
                  SUBSTR(OOHA.ATTRIBUTE9, 6, 2),
                  '2',
                  TO_CHAR(OOHA.ORDERED_DATE, 'MM'),
                  '3',
                  TO_CHAR(OOHA.CREATION_DATE, 'MM'),
                  '4',
                  TO_CHAR(OOLA.REQUEST_DATE, 'mm'))) = :B8
AND DECODE(:B9,
        '1',
        SUBSTR(OOHA.ATTRIBUTE9, 1, 4),
        '2',
        TO_CHAR(OOHA.ORDERED_DATE, 'YYYY'),
        '3',
        TO_CHAR(OOHA.CREATION_DATE, 'YYYY'),
        '4',
        TO_CHAR(OOLA.REQUEST_DATE, 'yyyy')) = TO_CHAR(:B10)
AND OOHA.HEADER_ID = OOLA.HEADER_ID
AND OL.LOOKUP_CODE = :B7
AND OL.LOOKUP_CODE = :B7
AND OL.LOOKUP_CODE = OOHA.SALES_CHANNEL_CODE
AND OTL.TRANSACTION_TYPE_ID = OOLA.LINE_TYPE_ID
AND OL.ENABLED_FLAG = 'Y'
AND OL.LOOKUP_TYPE = 'SALES_CHANNEL'
AND OTL.LANGUAGE = USERENV('LANG')
AND OOHA.ORDER_TYPE_ID = :B11
AND (TO_CHAR(OOHA.ORDERED_DATE, 'YYYY') = TO_CHAR(:B10) OR
  (OOHA.ORDER_TYPE_ID = 1009 AND :B9 = 4))

SQL解释如下:
SELECT STATEMENT, GOAL = CHOOSE                        358        1        158        358               
SORT AGGREGATE                                1        158                       
  NESTED LOOPS                        358        1        158        358               
   NESTED LOOPS                        357        1        136        357               
    NESTED LOOPS                        352        1        105        352               
     TABLE ACCESS BY INDEX ROWID        APPLSYS        FND_LOOKUP_VALUES        3        1        68        3               
      INDEX UNIQUE SCAN        APPLSYS        FND_LOOKUP_VALUES_U1        2        1                2               
      TABLE ACCESS FULL        ONT        OE_ORDER_HEADERS_ALL        349        1        37        349               
    TABLE ACCESS BY INDEX ROWID        ONT        OE_ORDER_LINES_ALL        5        1        31        5               
     INDEX RANGE SCAN        ONT        OE_ORDER_LINES_N1        2        10                2               
   TABLE ACCESS BY INDEX ROWID        ONT        OE_TRANSACTION_TYPES_TL        1        1        22        1               
    INDEX UNIQUE SCAN        ONT        OE_TRANSACTION_TYPES_TL_U1                1                               
建立的索引有:

------OE_ORDER_LINES_ALL的索引:

create index ONT.OE_ORDER_LINES_N1 on ONT.OE_ORDER_LINES_ALL (HEADER_ID)
  tablespace APPS_TS_TX_IDX
  pctfree 10
  initrans 11
  maxtrans 255
  storage
  (
    initial 128K
    next 128K
    minextents 1
    maxextents unlimited
    pctincrease 0
  );

-----OE_ORDER_HEADERS_ALL的索引

create unique index ONT.OE_ORDER_HEADERS_U1 on ONT.OE_ORDER_HEADERS_ALL (HEADER_ID)
  tablespace APPS_TS_TX_IDX
  pctfree 10
  initrans 11
  maxtrans 255
  storage
  (
    initial 128K
    next 128K
    minextents 1
    maxextents unlimited
    pctincrease 0
  );

create index ONT.OE_ORDER_HEADERS_N99 on ONT.OE_ORDER_HEADERS_ALL (TO_CHAR(ORDERED_DATE,'YYYY'))
  tablespace APPS_TS_TX_IDX
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 128K
    next 128K
    minextents 1
    maxextents unlimited
    pctincrease 0
  );

create index ONT.OE_ORDER_HEADERS_N9 on ONT.OE_ORDER_HEADERS_ALL (QUOTE_NUMBER, ORDER_TYPE_ID)
  tablespace APPS_TS_TX_IDX
  pctfree 10
  initrans 11
  maxtrans 255
  storage
  (
    initial 128K
    next 128K
    minextents 1
    maxextents unlimited
    pctincrease 0
  );

------OE_TRANSACTION_TYPES_TL的索引

create unique index ONT.OE_TRANSACTION_TYPES_TL_U1 on ONT.OE_TRANSACTION_TYPES_TL (TRANSACTION_TYPE_ID, LANGUAGE)
  tablespace APPS_TS_SEED
  pctfree 10
  initrans 11
  maxtrans 255
  storage
  (
    initial 128K
    next 128K
    minextents 1
    maxextents unlimited
    pctincrease 0
  );

希望前辈指点一二,谢谢了!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11446161/viewspace-419017/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11446161/viewspace-419017/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值