Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как можно улутшить производительность этого селекта ?  [new]
777779999
Guest
Как можно улутшить производительность этого селекта с помощью индексации :

SELECT
T12.CONFLICT_ID,
T12.LAST_UPD,
T12.CREATED,
T12.LAST_UPD_BY,
T12.CREATED_BY,
T12.MODIFICATION_NUM,
T12.ROW_ID,
T12.ACTION_CD,
T12.X_ACTION_CD_CRM,
T10.X_AGREED_DATE,
T10.X_AGREED_TIME_TXT,
T4.FILE_NAME,
T4.X_ATTACHMENT_FLG,
T12.CFG_STATE_CD,
T12.CFG_TYPE_CD,
T7.FST_NAME,
T7.LAST_NAME,
T12.X_CUSTOMER_REF_NO,
T10.X_FLOW_ORDER_ID,
T12.X_FREMF_NUM,
T12.X_INSTALL_STATUS,
T12.X_INTERNAL_STATUS,
T11.NAME,
T9.ACCNT_ID,
T11.OU_NUM,
T12.X_DELIVERY_ORDER_NUM,
T12.X_LEGACY_SYSTEM,
T12.X_LEGACY_REF_NO,
T12.X_ORIGIN_ORDER_NUM,
T12.LN_NUM,
T12.LN_NUM2,
T12.X_MAIN_CONNECTION_NUM,
T12.X_CUSTOMER_REF_NO,
T9.ORDER_DT,
T12.ORDER_ID,
T9.ORDER_TYPE_ID,
T9.BU_ID,
T9.X_ORIGIN_ORDER_NUM,
T9.X_ORIGIN_SYSTEM,
T12.PAR_ORDER_ITEM_ID,
T1.PART_NUM,
T1.NAME,
T12.PROD_ID,
T12.X_PROD_LINE_CRM,
T12.X_REQUESTED_DATE,
T10.X_REQUESTED_INSTALL_DATE,
T12.X_RESOURCE_NO_OLD,
T12.ROOT_ORDER_ITEM_ID,
T12.SHIP_METH_CD,
T12.SHIP_ADDR_ID,
T12.STATUS_CD,
T6.FST_NAME,
T6.LAST_NAME,
T12.X_ERR_DESC_CD,
T2.NAME,
T10.X_COMMENT,
T12.LOANER_FLG,
T10.X_OLD_CONNECTION_NUM,
T10.X_USER1_INSA,
T10.X_USER2_INSA,
T8.NAME,
T10.X_USER1_NAME,
T10.X_USER2_NAME,
T10.X_USER1_ADDRESS,
T10.X_USER2_ADDRESS,
T10.X_USER1_KID,
T10.X_USER1_KID_OLD,
T9.X_CRM_LOCKED,
T9.X_CRM_LOCKED_BY_ID,
T5.FST_NAME,
T5.LAST_NAME,
T12.X_ORDER_LOCKED_ID,
T10.X_AVTALE_ID,
T3.BU_ID,
T10.ROW_ID,
T10.MODIFICATION_NUM,
T10.CREATED_BY,
T10.LAST_UPD_BY,
T10.CREATED,
T10.LAST_UPD,
T10.CONFLICT_ID,
T10.PAR_ROW_ID
FROM
S_PROD_INT T1,
S_ORDER_TYPE T2,
S_ORDER T3,
S_ORDER_IT_ATT T4,
S_CONTACT T5,
S_CONTACT T6,
S_CONTACT T7,
S_ORG_EXT T8,
S_ORDER T9,
CX_S_ORDER_ITEM_X T10,
S_ORG_EXT T11,
S_ORDER_ITEM T12
WHERE
T12.ROW_ID = T4.PAR_ROW_ID (+) AND
T12.CREATED_BY = T7.PAR_ROW_ID AND
T9.ACCNT_ID = T11.PAR_ROW_ID (+) AND
T12.ORDER_ID = T9.ROW_ID AND
T9.ORDER_TYPE_ID = T2.ROW_ID AND
T12.PROD_ID = T1.ROW_ID AND
T12.LAST_UPD_BY = T6.PAR_ROW_ID AND
T12.SERV_ACCNT_ID = T8.PAR_ROW_ID (+) AND
T9.X_CRM_LOCKED_BY_ID = T5.PAR_ROW_ID (+) AND
T12.ROW_ID = T10.PAR_ROW_ID AND
T12.ORDER_ID = T3.ROW_ID (+) AND
(T1.X_INVISIBLE_FLAG = 'N' AND T12.PAR_ORDER_ITEM_ID IS NULL) AND
(T12.X_ACTION_CD_CRM = 'Bytt ISP' AND
T12.X_INSTALL_STATUS IS NOT NULL AND
(T12.X_PROD_LINE_CRM = 'Produktgruppe Bredbåndsaksess' OR
T12.X_PROD_LINE_CRM = 'Produktgruppe SHDSL' OR
T12.X_PROD_LINE_CRM = 'Produktgruppe Bredbåndsaksess OMS' OR
T12.X_PROD_LINE_CRM = 'Produktgruppe Operatøraksess' OR
T12.X_PROD_LINE_CRM = 'Produktgruppe Operatøraksess OMS') AND
T10.X_REQUESTED_INSTALL_DATE IS NOT NULL AND
T12.STATUS_CD = 'Rejected' AND
(T9.X_CRM_LOCKED != 'Y' OR T9.X_CRM_LOCKED IS NULL));


==============================================================

Execute Explain Plan :

SELECT STATEMENT Optimizer=CHOOSE (Cost=31 Card=5 Bytes=3255)
NESTED LOOPS (Cost=31 Card=5 Bytes=3255)
NESTED LOOPS (Cost=30 Card=5 Bytes=3125)
NESTED LOOPS (OUTER) (Cost=29 Card=5 Bytes=2995)
NESTED LOOPS (OUTER) (Cost=28 Card=5 Bytes=2865)
NESTED LOOPS (OUTER) (Cost=27 Card=5 Bytes=2775)
NESTED LOOPS (Cost=26 Card=5 Bytes=2615)
NESTED LOOPS (Cost=25 Card=5 Bytes=2515)
NESTED LOOPS (Cost=24 Card=5 Bytes=2185)
NESTED LOOPS (OUTER) (Cost=23 Card=5 Bytes=1575)
NESTED LOOPS (OUTER) (Cost=22 Card=4 Bytes=1120)
NESTED LOOPS (Cost=21 Card=4 Bytes=1012)
TABLE ACCESS (BY INDEX ROWID) OF S_ORDER_ITEM (Cost=20 Card=4 Bytes=840)
INDEX (SKIP SCAN) OF S_ORDER_ITEM_14_X (NON-UNIQUE) (Cost=1912 Card=13)
TABLE ACCESS (BY INDEX ROWID) OF S_PROD_INT (Cost=1 Card=1 Bytes=43)
INDEX (UNIQUE SCAN) OF S_PROD_INT_P1 (UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF S_ORG_EXT (Cost=1 Card=1 Bytes=27)
INDEX (UNIQUE SCAN) OF S_ORG_EXT_U3 (UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF S_ORDER_IT_ATT (Cost=1 Card=1 Bytes=35)
INDEX (RANGE SCAN) OF S_ORDER_IT_ATT_U1 (UNIQUE) (Cost=2 Card=1)
TABLE ACCESS (BY INDEX ROWID) OF CX_S_ORDER_ITEM_X (Cost=1 Card=1 Bytes=122)
INDEX (RANGE SCAN) OF CX_S_ORDERITEMX_4_X (NON-UNIQUE) (Cost=1 Card=1)
TABLE ACCESS (BY INDEX ROWID) OF S_ORDER (Cost=1 Card=1 Bytes=66)
INDEX (UNIQUE SCAN) OF S_ORDER_P1 (UNIQUE) (Cost=1 Card=1)
TABLE ACCESS (BY INDEX ROWID) OF S_ORDER_TYPE (Cost=1 Card=1 Bytes=20)
INDEX (UNIQUE SCAN) OF S_ORDER_TYPE_P1 (UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF S_ORG_EXT (Cost=1 Card=1 Bytes=32)
INDEX (UNIQUE SCAN) OF S_ORG_EXT_U3 (UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF S_ORDER (Cost=1 Card=1 Bytes=18)
INDEX (UNIQUE SCAN) OF S_ORDER_P1 (UNIQUE) (Cost=1 Card=1)
TABLE ACCESS (BY INDEX ROWID) OF S_CONTACT (Cost=1 Card=1 Bytes=26)
INDEX (UNIQUE SCAN) OF S_CONTACT_U2 (UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF S_CONTACT (Cost=1 Card=1 Bytes=26)
INDEX (UNIQUE SCAN) OF S_CONTACT_U2 (UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF S_CONTACT (Cost=1 Card=1 Bytes=26)
INDEX (UNIQUE SCAN) OF S_CONTACT_U2 (UNIQUE)


===============================================


CX_S_ORDERITEMX_4_X - indeks po poljam : PAR_ROW_ID, X_REQUESTED_INSTALL_DATE

S_ORDER_ITEM_14_X - indekss po poljam : STATUS_CD, X_ACTION_CD_CRM, X_INSTALL_STATUS,
X_PROD_LINE_CRM
17 сен 07, 14:39    [4677420]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
777779999
Как можно улутшить производительность этого селекта с помощью индексации :

SELECT
      T12.CONFLICT_ID,
      T12.LAST_UPD,
      T12.CREATED,
      T12.LAST_UPD_BY,
      T12.CREATED_BY,
      T12.MODIFICATION_NUM,
      T12.ROW_ID,
      T12.ACTION_CD,
      T12.X_ACTION_CD_CRM,
      T10.X_AGREED_DATE,
      T10.X_AGREED_TIME_TXT,
      T4.FILE_NAME,
      T4.X_ATTACHMENT_FLG,
      T12.CFG_STATE_CD,
      T12.CFG_TYPE_CD,
      T7.FST_NAME,
      T7.LAST_NAME,
      T12.X_CUSTOMER_REF_NO,
      T10.X_FLOW_ORDER_ID,
      T12.X_FREMF_NUM,
      T12.X_INSTALL_STATUS,
      T12.X_INTERNAL_STATUS,
      T11.NAME,
      T9.ACCNT_ID,
      T11.OU_NUM,
      T12.X_DELIVERY_ORDER_NUM,
      T12.X_LEGACY_SYSTEM,
      T12.X_LEGACY_REF_NO,
      T12.X_ORIGIN_ORDER_NUM,
      T12.LN_NUM,
      T12.LN_NUM2,
      T12.X_MAIN_CONNECTION_NUM,
      T12.X_CUSTOMER_REF_NO,
      T9.ORDER_DT,
      T12.ORDER_ID,
      T9.ORDER_TYPE_ID,
      T9.BU_ID,
      T9.X_ORIGIN_ORDER_NUM,
      T9.X_ORIGIN_SYSTEM,
      T12.PAR_ORDER_ITEM_ID,
      T1.PART_NUM,
      T1.NAME,
      T12.PROD_ID,
      T12.X_PROD_LINE_CRM,
      T12.X_REQUESTED_DATE,
      T10.X_REQUESTED_INSTALL_DATE,
      T12.X_RESOURCE_NO_OLD,
      T12.ROOT_ORDER_ITEM_ID,
      T12.SHIP_METH_CD,
      T12.SHIP_ADDR_ID,
      T12.STATUS_CD,
      T6.FST_NAME,
      T6.LAST_NAME,
      T12.X_ERR_DESC_CD,
      T2.NAME,
      T10.X_COMMENT,
      T12.LOANER_FLG,
      T10.X_OLD_CONNECTION_NUM,
      T10.X_USER1_INSA,
      T10.X_USER2_INSA,
      T8.NAME,
      T10.X_USER1_NAME,
      T10.X_USER2_NAME,
      T10.X_USER1_ADDRESS,
      T10.X_USER2_ADDRESS,
      T10.X_USER1_KID,
      T10.X_USER1_KID_OLD,
      T9.X_CRM_LOCKED,
      T9.X_CRM_LOCKED_BY_ID,
      T5.FST_NAME,
      T5.LAST_NAME,
      T12.X_ORDER_LOCKED_ID,
      T10.X_AVTALE_ID,
      T3.BU_ID,
      T10.ROW_ID,
      T10.MODIFICATION_NUM,
      T10.CREATED_BY,
      T10.LAST_UPD_BY,
      T10.CREATED,
      T10.LAST_UPD,
      T10.CONFLICT_ID,
      T10.PAR_ROW_ID
   FROM 
       S_PROD_INT T1,
       S_ORDER_TYPE T2,
       S_ORDER T3,
       S_ORDER_IT_ATT T4,
       S_CONTACT T5,
       S_CONTACT T6,
       S_CONTACT T7,
       S_ORG_EXT T8,
       S_ORDER T9,
       CX_S_ORDER_ITEM_X T10,
       S_ORG_EXT T11,
       S_ORDER_ITEM T12
   WHERE 
    T12.ROW_ID = T4.PAR_ROW_ID (+) AND
      T12.CREATED_BY = T7.PAR_ROW_ID AND
      T9.ACCNT_ID = T11.PAR_ROW_ID (+) AND
      T12.ORDER_ID = T9.ROW_ID AND
      T9.ORDER_TYPE_ID = T2.ROW_ID AND
      T12.PROD_ID = T1.ROW_ID AND
      T12.LAST_UPD_BY = T6.PAR_ROW_ID AND
      T12.SERV_ACCNT_ID = T8.PAR_ROW_ID (+) AND
      T9.X_CRM_LOCKED_BY_ID = T5.PAR_ROW_ID (+) AND
      T12.ROW_ID = T10.PAR_ROW_ID AND
      T12.ORDER_ID = T3.ROW_ID (+) AND
      (T1.X_INVISIBLE_FLAG = 'N' AND T12.PAR_ORDER_ITEM_ID IS NULL) AND
      (T12.X_ACTION_CD_CRM = 'Bytt ISP' AND 
       T12.X_INSTALL_STATUS IS NOT NULL AND 
      (T12.X_PROD_LINE_CRM = 'Produktgruppe Bredbåndsaksess' OR 
	T12.X_PROD_LINE_CRM = 'Produktgruppe SHDSL' OR 
	T12.X_PROD_LINE_CRM = 'Produktgruppe Bredbåndsaksess OMS' OR 
	T12.X_PROD_LINE_CRM = 'Produktgruppe Operatøraksess' OR 
	T12.X_PROD_LINE_CRM = 'Produktgruppe Operatøraksess OMS') AND 
	T10.X_REQUESTED_INSTALL_DATE IS NOT NULL AND 
	T12.STATUS_CD = 'Rejected' AND 
	(T9.X_CRM_LOCKED != 'Y' OR T9.X_CRM_LOCKED IS NULL));


==============================================================

Execute Explain Plan :

SELECT STATEMENT Optimizer=CHOOSE (Cost=31 Card=5 Bytes=3255)
  NESTED LOOPS (Cost=31 Card=5 Bytes=3255)
    NESTED LOOPS (Cost=30 Card=5 Bytes=3125)
      NESTED LOOPS (OUTER) (Cost=29 Card=5 Bytes=2995)
        NESTED LOOPS (OUTER) (Cost=28 Card=5 Bytes=2865)
          NESTED LOOPS (OUTER) (Cost=27 Card=5 Bytes=2775)
            NESTED LOOPS (Cost=26 Card=5 Bytes=2615)
              NESTED LOOPS (Cost=25 Card=5 Bytes=2515)
                NESTED LOOPS (Cost=24 Card=5 Bytes=2185)
                  NESTED LOOPS (OUTER) (Cost=23 Card=5 Bytes=1575)
                    NESTED LOOPS (OUTER) (Cost=22 Card=4 Bytes=1120)
                      NESTED LOOPS (Cost=21 Card=4 Bytes=1012)
                        TABLE ACCESS (BY INDEX ROWID) OF S_ORDER_ITEM (Cost=20 Card=4 Bytes=840)
                          INDEX (SKIP SCAN) OF S_ORDER_ITEM_14_X (NON-UNIQUE) (Cost=1912 Card=13)
                        TABLE ACCESS (BY INDEX ROWID) OF S_PROD_INT (Cost=1 Card=1 Bytes=43)
                          INDEX (UNIQUE SCAN) OF S_PROD_INT_P1 (UNIQUE)
                      TABLE ACCESS (BY INDEX ROWID) OF S_ORG_EXT (Cost=1 Card=1 Bytes=27)
                        INDEX (UNIQUE SCAN) OF S_ORG_EXT_U3 (UNIQUE)
                    TABLE ACCESS (BY INDEX ROWID) OF S_ORDER_IT_ATT (Cost=1 Card=1 Bytes=35)
                      INDEX (RANGE SCAN) OF S_ORDER_IT_ATT_U1 (UNIQUE) (Cost=2 Card=1)
                  TABLE ACCESS (BY INDEX ROWID) OF CX_S_ORDER_ITEM_X (Cost=1 Card=1 Bytes=122)
                    INDEX (RANGE SCAN) OF CX_S_ORDERITEMX_4_X (NON-UNIQUE) (Cost=1 Card=1)
                TABLE ACCESS (BY INDEX ROWID) OF S_ORDER (Cost=1 Card=1 Bytes=66)
                  INDEX (UNIQUE SCAN) OF S_ORDER_P1 (UNIQUE) (Cost=1 Card=1)
              TABLE ACCESS (BY INDEX ROWID) OF S_ORDER_TYPE (Cost=1 Card=1 Bytes=20)
                INDEX (UNIQUE SCAN) OF S_ORDER_TYPE_P1 (UNIQUE)
            TABLE ACCESS (BY INDEX ROWID) OF S_ORG_EXT (Cost=1 Card=1 Bytes=32)
              INDEX (UNIQUE SCAN) OF S_ORG_EXT_U3 (UNIQUE)
          TABLE ACCESS (BY INDEX ROWID) OF S_ORDER (Cost=1 Card=1 Bytes=18)
            INDEX (UNIQUE SCAN) OF S_ORDER_P1 (UNIQUE) (Cost=1 Card=1)
        TABLE ACCESS (BY INDEX ROWID) OF S_CONTACT (Cost=1 Card=1 Bytes=26)
          INDEX (UNIQUE SCAN) OF S_CONTACT_U2 (UNIQUE)
      TABLE ACCESS (BY INDEX ROWID) OF S_CONTACT (Cost=1 Card=1 Bytes=26)
        INDEX (UNIQUE SCAN) OF S_CONTACT_U2 (UNIQUE)
    TABLE ACCESS (BY INDEX ROWID) OF S_CONTACT (Cost=1 Card=1 Bytes=26)
      INDEX (UNIQUE SCAN) OF S_CONTACT_U2 (UNIQUE)

===============================================


CX_S_ORDERITEMX_4_X - indeks po poljam : PAR_ROW_ID, X_REQUESTED_INSTALL_DATE

S_ORDER_ITEM_14_X - indekss po poljam : STATUS_CD, X_ACTION_CD_CRM, X_INSTALL_STATUS,
X_PROD_LINE_CRM

При оформлении кода используйте, пожалуйста, тег SRC данного форума.
Этим вы повысите свои шансы на получение ответа.
17 сен 07, 14:41    [4677432]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
G.M.
Member

Откуда:
Сообщений: 342
А сколько строк выдает запрос?
17 сен 07, 15:21    [4677729]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54381
777779999
Как можно улуЧшить производительность этого селекта с помощью индексации
Изначально неверный вопрос.
Правильный вопрос: Как можно улучшить производительность этого селекта?
17 сен 07, 15:40    [4677899]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
Vladimir Sitnikov
Member

Откуда: Moscow, NetCracker
Сообщений: 407
777779999
S_ORDER_ITEM_14_X - indekss po poljam : STATUS_CD, X_ACTION_CD_CRM, X_INSTALL_STATUS,
X_PROD_LINE_CRM
В каком порядке поля преречислены в индексе?
17 сен 07, 15:46    [4677964]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
777779999
Guest
takoj select sgeneriroval Siebel, ja sama ego ne pisala, mne nado toljko ubistritj ego

------------


Indeksi V sledujuschem porjadke :
X_INSTALL_STATUS, X_PROD_LINE_CRM, STATUS_CD, X_ACTION_CD_CRM


------------

Select vozvraschaet 30 strok
17 сен 07, 16:25    [4678297]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
Vladimir Sitnikov
Member

Откуда: Moscow, NetCracker
Сообщений: 407
777779999
улутшить производительность этого селекта

А с какой скоростью он сейчас работает?

777779999
Select vozvraschaet 30 strok

ТОП популярных вопросов №10 -- Трассировка сессий
17 сен 07, 16:51    [4678473]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
G.M.
Member

Откуда:
Сообщений: 342
777779999
Indeksi V sledujuschem porjadke :
X_INSTALL_STATUS, X_PROD_LINE_CRM, STATUS_CD, X_ACTION_CD_CRM

Select vozvraschaet 30 strok

Надо поменять порядок - X_INSTALL_STATUS поставить последним.

Кстати, еще вопрос - а сколько времени сейчас уходит на выполнение?
17 сен 07, 16:54    [4678500]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
777779999
Guest
a pochemu X_INSTALL STATUSS POSTAVITJ POSLEDNIM ?

----------

sejchas uhodit 40-50 sekund

hotelosj bi pmenjshe
ili eto normaljno ?

--

ja novichok v Oracle
17 сен 07, 17:33    [4678777]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
aamazur
Member

Откуда: CA
Сообщений: 438
2 777779999
это siebel судя по всему.
оптимизация коего одно из самых убогих занятий... код не поменяешь, статистику только собирать играться...
17 сен 07, 17:35    [4678794]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
G.M.
Member

Откуда:
Сообщений: 342
777779999
a pochemu X_INSTALL STATUSS POSTAVITJ POSLEDNIM ?

sejchas uhodit 40-50 sekund

hotelosj bi pmenjshe
ili eto normaljno ?

Потому что по остальным полям индекса есть условия равенства, а по X_INSTALL_STATUS - нет. Поэтому вместо RANGE SCAN происходит более длительный SKIP SCAN.

40-50 секунд - многовато. Должно быть быстрее раз в 20.
17 сен 07, 18:00    [4678991]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
777779999
Guest
ja sdelala takoj porjadok : X_PROD_LINE_CRM, X_ACTION_CD_CRM, STATUS_CD, X_INSTALL_STATUS

i teperj u menja vishlo tak :

SELECT STATEMENT Optimizer=CHOOSE (Cost=12 Card=5 Bytes=3255)
NESTED LOOPS (Cost=12 Card=5 Bytes=3255)
NESTED LOOPS (Cost=11 Card=5 Bytes=3125)
NESTED LOOPS (OUTER) (Cost=10 Card=5 Bytes=2995)
NESTED LOOPS (OUTER) (Cost=9 Card=5 Bytes=2865)
NESTED LOOPS (OUTER) (Cost=8 Card=5 Bytes=2775)
NESTED LOOPS (Cost=7 Card=5 Bytes=2615)
NESTED LOOPS (Cost=6 Card=5 Bytes=2515)
NESTED LOOPS (Cost=5 Card=5 Bytes=2185)
NESTED LOOPS (OUTER) (Cost=4 Card=5 Bytes=1575)
NESTED LOOPS (OUTER) (Cost=3 Card=4 Bytes=1120)
NESTED LOOPS (Cost=2 Card=4 Bytes=1012)
TABLE ACCESS (BY INDEX ROWID) OF S_ORDER_ITEM (Cost=1 Card=4 Bytes=840)
INDEX (SKIP SCAN) OF S_ORDER_ITEM_14_X (NON-UNIQUE) (Cost=24 Card=13)
TABLE ACCESS (BY INDEX ROWID) OF S_PROD_INT (Cost=1 Card=1 Bytes=43)
INDEX (UNIQUE SCAN) OF S_PROD_INT_P1 (UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF S_ORG_EXT (Cost=1 Card=1 Bytes=27)
INDEX (UNIQUE SCAN) OF S_ORG_EXT_U3 (UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF S_ORDER_IT_ATT (Cost=1 Card=1 Bytes=35)
INDEX (RANGE SCAN) OF S_ORDER_IT_ATT_U1 (UNIQUE) (Cost=2 Card=1)
TABLE ACCESS (BY INDEX ROWID) OF CX_S_ORDER_ITEM_X (Cost=1 Card=1 Bytes=122)
INDEX (RANGE SCAN) OF CX_S_ORDERITEMX_4_X (NON-UNIQUE) (Cost=1 Card=1)
TABLE ACCESS (BY INDEX ROWID) OF S_ORDER (Cost=1 Card=1 Bytes=66)
INDEX (UNIQUE SCAN) OF S_ORDER_P1 (UNIQUE) (Cost=1 Card=1)
TABLE ACCESS (BY INDEX ROWID) OF S_ORDER_TYPE (Cost=1 Card=1 Bytes=20)
INDEX (UNIQUE SCAN) OF S_ORDER_TYPE_P1 (UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF S_ORG_EXT (Cost=1 Card=1 Bytes=32)
INDEX (UNIQUE SCAN) OF S_ORG_EXT_U3 (UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF S_ORDER (Cost=1 Card=1 Bytes=18)
INDEX (UNIQUE SCAN) OF S_ORDER_P1 (UNIQUE) (Cost=1 Card=1)
TABLE ACCESS (BY INDEX ROWID) OF S_CONTACT (Cost=1 Card=1 Bytes=26)
INDEX (UNIQUE SCAN) OF S_CONTACT_U2 (UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF S_CONTACT (Cost=1 Card=1 Bytes=26)
INDEX (UNIQUE SCAN) OF S_CONTACT_U2 (UNIQUE)
TABLE ACCESS (BY INDEX ROWID) OF S_CONTACT (Cost=1 Card=1 Bytes=26)
INDEX (UNIQUE SCAN) OF S_CONTACT_U2 (UNIQUE)


no vse ravno dolgo - 40 sekund.

A esche ochenj siljno tormozit select eto uslovie : T10.X_REQUESTED_INSTALL_DATE IS NOT NULL AND

esli ja ego ubiraju, to vse namnogo bistree..
no po etomu usloviju zhe Oracle ne delaet indeksi, esli estj nulevie znachenija ??



ja sdelala indeks CX_S_ORDERITEMX_4_X ( v tablice CX_S_ORDER_ITEM_X )

po poljam PAR_ROW_ID, X_REQUESTED_INSTALL_DATE

no eto nichego mne ne dalo
17 сен 07, 20:06    [4679526]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Ну используйте же, пожалуйста, для оформления текста тег SRC данного форума!
Мало кому захочется читать вашу кашу из текста вдобавок к остальной вашей каше... :-(
17 сен 07, 20:51    [4679637]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
Vladimir Sitnikov
Member

Откуда: Moscow, NetCracker
Сообщений: 407
777779999
A esche ochenj siljno tormozit select eto uslovie : T10.X_REQUESTED_INSTALL_DATE IS NOT NULL AND

esli ja ego ubiraju, to vse namnogo bistree..
И на сколько быстрее? Почему бы не привести (обведя его в [src oracle] [/src]) план "быстрого" и "медленного" запроса? Хотя бы для того, чтобы самой посмотреть, сравнить и понять причину вдумчивости первого варианта.

777779999
no po etomu usloviju zhe Oracle ne delaet indeksi, esli estj nulevie znachenija ??
В составной индекс СX_S_ORDERITEMX_4_X (PAR_ROW_ID, X_REQUESTED_INSTALL_DATE) попадают как строки с X_REQUESTED_INSTALL_DATE IS NOT NULL так и строки с X_REQUESTED_INSTALL_DATE IS NULL.
17 сен 07, 22:46    [4679782]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
777779999
Guest
A pochemu etot zapros dolgo vipolnjaetsja ? 50 sec.
chto zdesj tormozit ?

SELECT STATEMENT Optimizer=CHOOSE (Cost=12 Card=5 Bytes=3255)
  NESTED LOOPS (Cost=12 Card=5 Bytes=3255)
    NESTED LOOPS (Cost=11 Card=5 Bytes=3125)
      NESTED LOOPS (OUTER) (Cost=10 Card=5 Bytes=2995)
        NESTED LOOPS (OUTER) (Cost=9 Card=5 Bytes=2865)
          NESTED LOOPS (OUTER) (Cost=8 Card=5 Bytes=2775)
            NESTED LOOPS (Cost=7 Card=5 Bytes=2615)
              NESTED LOOPS (Cost=6 Card=5 Bytes=2515)
                NESTED LOOPS (Cost=5 Card=5 Bytes=2185)
                  NESTED LOOPS (OUTER) (Cost=4 Card=5 Bytes=1575)
                    NESTED LOOPS (OUTER) (Cost=3 Card=4 Bytes=1120)
                      NESTED LOOPS (Cost=2 Card=4 Bytes=1012)
                        INLIST ITERATOR
                          TABLE ACCESS (BY INDEX ROWID) OF S_ORDER_ITEM (Cost=1 Card=4 Bytes=840)
                            INDEX (RANGE SCAN) OF S_ORDER_ITEM_14_X (NON-UNIQUE) (Cost=2 Card=11)
                        TABLE ACCESS (BY INDEX ROWID) OF S_PROD_INT (Cost=1 Card=1 Bytes=43)
                          INDEX (UNIQUE SCAN) OF S_PROD_INT_P1 (UNIQUE)
                      TABLE ACCESS (BY INDEX ROWID) OF S_ORG_EXT (Cost=1 Card=1 Bytes=27)
                        INDEX (UNIQUE SCAN) OF S_ORG_EXT_U3 (UNIQUE)
                    TABLE ACCESS (BY INDEX ROWID) OF S_ORDER_IT_ATT (Cost=1 Card=1 Bytes=35)
                      INDEX (RANGE SCAN) OF S_ORDER_IT_ATT_U1 (UNIQUE) (Cost=2 Card=1)
                  TABLE ACCESS (BY INDEX ROWID) OF CX_S_ORDER_ITEM_X (Cost=1 Card=1 Bytes=122)
                    INDEX (RANGE SCAN) OF CX_S_ORDERITEMX_4_X (NON-UNIQUE) (Cost=1 Card=1)
                TABLE ACCESS (BY INDEX ROWID) OF S_ORDER (Cost=1 Card=1 Bytes=66)
                  INDEX (UNIQUE SCAN) OF S_ORDER_P1 (UNIQUE) (Cost=1 Card=1)
              TABLE ACCESS (BY INDEX ROWID) OF S_ORDER_TYPE (Cost=1 Card=1 Bytes=20)
                INDEX (UNIQUE SCAN) OF S_ORDER_TYPE_P1 (UNIQUE)
            TABLE ACCESS (BY INDEX ROWID) OF S_ORG_EXT (Cost=1 Card=1 Bytes=32)
              INDEX (UNIQUE SCAN) OF S_ORG_EXT_U3 (UNIQUE)
          TABLE ACCESS (BY INDEX ROWID) OF S_ORDER (Cost=1 Card=1 Bytes=18)
            INDEX (UNIQUE SCAN) OF S_ORDER_P1 (UNIQUE) (Cost=1 Card=1)
        TABLE ACCESS (BY INDEX ROWID) OF S_CONTACT (Cost=1 Card=1 Bytes=26)
          INDEX (UNIQUE SCAN) OF S_CONTACT_U2 (UNIQUE)
      TABLE ACCESS (BY INDEX ROWID) OF S_CONTACT (Cost=1 Card=1 Bytes=26)
        INDEX (UNIQUE SCAN) OF S_CONTACT_U2 (UNIQUE)
    TABLE ACCESS (BY INDEX ROWID) OF S_CONTACT (Cost=1 Card=1 Bytes=26)
      INDEX (UNIQUE SCAN) OF S_CONTACT_U2 (UNIQUE)
18 сен 07, 10:57    [4681014]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
777779999
A pochemu etot zapros dolgo vipolnjaetsja ? 50 sec.
chto zdesj tormozit ?

INDEX (RANGE/UNIQUE SCAN) + TABLE ACCESS (BY INDEX ROWID)
18 сен 07, 11:01    [4681046]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
Vladimir Sitnikov
Member

Откуда: Moscow, NetCracker
Сообщений: 407
777779999
A pochemu etot zapros dolgo vipolnjaetsja ? 50 sec.
chto zdesj tormozit ?

Раз у вас есть конкретный запрос, снимите трассировку 10046 и по ней можно будет сказать наверняка. По explain'у можно только телепатические способности повышать.
18 сен 07, 11:45    [4681508]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
777779999
Guest
Izvinite, no ja novenjkaja v Oracle.
Kak 10046 trassirovku v TOADe ?
18 сен 07, 11:59    [4681644]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
Vladimir Sitnikov
Member

Откуда: Moscow, NetCracker
Сообщений: 407
777779999
Izvinite, no ja novenjkaja v Oracle.
Kak 10046 trassirovku v TOADe ?

Вопрос № 10 из самых популярных рассматривает науку о трассировке сессий --> Как включить трассировку
18 сен 07, 14:02    [4682759]     Ответить | Цитировать Сообщить модератору
 Re: Как можно улутшить производительность этого селекта ?  [new]
777779999
Guest
Vladimir Sitnikov

В составной индекс СX_S_ORDERITEMX_4_X (PAR_ROW_ID, X_REQUESTED_INSTALL_DATE)
попадают как строки с X_REQUESTED_INSTALL_DATE IS NOT NULL так и строки с X_REQUESTED_INSTALL_DATE IS NULL.



A chto eto ne sovsem horosho ?
Eto ploho ?
21 сен 07, 10:23    [4697760]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить