Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Отхинтовать запрос.

13 views
Skip to first unread message

Valera

unread,
Jun 17, 2006, 12:35:09 PM6/17/06
to
Привет всем!!!

Есть небольшой запросик:
SELECT * FROM T_ATTR_AGGR
WHERE VALUE = 100
START WITH ID_AGGR=100
AND (ID_NAME = 100 )
CONNECT BY (PRIOR VALUE=ID_AGGR) AND (ID_NAME = 100 )

Но почему-то на разных системах (Linux Oracle 9.2.0.3 и WinNT Oracle
9.2.0.7) планы выполнения запросов критически разные.
Под Linux:
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost
|
------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | |
|
|* 1 | FILTER | | | |
|
|* 2 | CONNECT BY WITH FILTERING | | | |
|
| 3 | NESTED LOOPS | | | |
|
|* 4 | TABLE ACCESS CLUSTER | T_ATTR_AGGR | | |
|
|* 5 | INDEX UNIQUE SCAN | IC_AGGR | | |
|
| 6 | TABLE ACCESS BY USER ROWID| T_ATTR_AGGR | | |
|
| 7 | NESTED LOOPS | | | |
|
| 8 | BUFFER SORT | | | |
|
| 9 | CONNECT BY PUMP | | | |
|
|* 10 | TABLE ACCESS CLUSTER | T_ATTR_AGGR | | |
|
|* 11 | INDEX UNIQUE SCAN | IC_AGGR | | |
|
------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

1 - filter("T_ATTR_AGGR"."VALUE"=100)
2 - filter("T_ATTR_AGGR"."ID_AGGR"=100 AND "T_ATTR_AGGR"."ID_NAME"=100)
4 - filter("T_ATTR_AGGR"."ID_NAME"=100)
5 - access("T_ATTR_AGGR"."ID_AGGR"=100)
10 - filter("T_ATTR_AGGR"."ID_NAME"=100)
11 - access("T_ATTR_AGGR"."ID_AGGR"=NULL)

Note: rule based optimization

Под NT:
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | |
|* 1 | FILTER | | | | |
|* 2 | CONNECT BY WITH FILTERING| | | | |
|* 3 | FILTER | | | | |
| 4 | TABLE ACCESS FULL | T_ATTR_AGGR | | | |
| 5 | NESTED LOOPS | | | | |
| 6 | BUFFER SORT | | | | |
| 7 | CONNECT BY PUMP | | | | |
|* 8 | TABLE ACCESS CLUSTER | T_ATTR_AGGR | | | |
|* 9 | INDEX UNIQUE SCAN | IC_AGGR | | | |
| 10 | TABLE ACCESS FULL | T_ATTR_AGGR | | | |
---------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

1 - filter("T_ATTR_AGGR"."VALUE"=100)
2 - filter("T_ATTR_AGGR"."ID_AGGR"=100 AND "T_ATTR_AGGR"."ID_NAME"=100)
3 - filter("T_ATTR_AGGR"."ID_AGGR"=100 AND "T_ATTR_AGGR"."ID_NAME"=100)
8 - filter("T_ATTR_AGGR"."ID_NAME"=100)
9 - access("T_ATTR_AGGR"."ID_AGGR"=NULL)

Note: rule based optimization

Понятно - что в первом случае запрос летает, а во втором еле дышит. А
учитывая, что данный запрос - это подзапрос из под Exists, то исходный
запрос становится вообще мертвым.
Вопрос - как отхинтовать запрос так, что бы на второй системе получить
план такой-же как и на первой системе?
P.S.
Пробовал сделать outlines, но что самое для меня удивительное - хинты они
создали одинаковые в обоих системах, а планы запросов разные???

Валера


Olexandr Siroklyn

unread,
Jun 18, 2006, 11:22:25 PM6/18/06
to
From: Olexandr Siroklyn <qnu...@inbox.ru>
Subject: Re: =?KOI8-U?Q?=EF=D4=C8=C9=CE=D4=CF=D7=C1=D4=D8_=DA=C1=D0=D2=CF?=
=?KOI8-U?Q?=D3=2E?=

Попробуй поиграться с "_OLD_CONNECT_BY_ENABLED"=true|false
для 9.2.0.7
P.S.
Можешь не искать описания этого параметра в официальной документации.
Его там просто нет.

Valera wrote:
> From: "Valera" <val...@ibd.ru>


>
> From: "Valera" <val...@ibd.ru>
>
> Привет всем!!!
>
> Есть небольшой запросик:
> SELECT * FROM T_ATTR_AGGR
> WHERE VALUE = 100
> START WITH ID_AGGR=100
> AND (ID_NAME = 100 )
> CONNECT BY (PRIOR VALUE=ID_AGGR) AND (ID_NAME = 100 )
>

> Hо почему-то на разных системах (Linux Oracle 9.2.0.3 и WinNT Oracle


--

With best wishes,
Olexandr Siroklyn

Valera

unread,
Jun 19, 2006, 4:34:26 AM6/19/06
to
Привет!!!

"Olexandr Siroklyn" <Olexandr...@p128.f95.n464.z2.fidonet.org> wrote
in message news:42758...@news.isd.dp.ua...


> From: Olexandr Siroklyn <qnu...@inbox.ru>
> Subject: Re:
> =?KOI8-U?Q?=EF=D4=C8=C9=CE=D4=CF=D7=C1=D4=D8_=DA=C1=D0=D2=CF?=
> =?KOI8-U?Q?=D3=2E?=
>
> Попробуй поиграться с "_OLD_CONNECT_BY_ENABLED"=true|false
> для 9.2.0.7

SQL> alter system set OLD_CONNECT_BY_ENABLED TRUE;
alter system set OLD_CONNECT_BY_ENABLED TRUE
*
ERROR at line 1:
ORA-02065: illegal option for ALTER SYSTEM

Это не динамический параметр? Его в pfile выставить и перепустить базу?

Andrew Lesnichenko

unread,
Jun 19, 2006, 5:02:24 AM6/19/06
to
Valera wrote:

>>Попробуй поиграться с "_OLD_CONNECT_BY_ENABLED"=true|false

^^^^


>>для 9.2.0.7
>
> SQL> alter system set OLD_CONNECT_BY_ENABLED TRUE;

^^^


> alter system set OLD_CONNECT_BY_ENABLED TRUE
> *
> ERROR at line 1:
> ORA-02065: illegal option for ALTER SYSTEM
>
> Это не динамический параметр? Его в pfile выставить и перепустить базу?

С подчеркивания начинается...

--
Andrew Lesnichenko

Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru

Valera

unread,
Jun 19, 2006, 6:11:00 AM6/19/06
to
Привет!!!
"Andrew Lesnichenko" <l...@mts.ru> wrote in message
news:e75of5$v87$2...@host.talk.ru...

> Valera wrote:
>
>>>Попробуй поиграться с "_OLD_CONNECT_BY_ENABLED"=true|false
> С подчеркивания начинается...
Не придал значения кавычкам - решил, что это для конфы было вставлено.
Проставил true - заработало!!!! Огромное спасибо!!!
>
> --
> Andrew Lesnichenko
Валера


Valera

unread,
Jun 19, 2006, 6:15:33 AM6/19/06
to
Привет!!

"Andrew Lesnichenko" <l...@mts.ru> wrote in message
news:e75of5$v87$2...@host.talk.ru...
> Valera wrote:
>>>для 9.2.0.7
А к стати - это именно для версии 9.2.0.7 имеет смысл параметр? Т.к. в
ближайшее время есть планы патчить Linux-овую машину, до 9.2.0.7?
> --
> Andrew Lesnichenko
Валера


Olexandr Siroklyn

unread,
Jun 19, 2006, 4:26:20 AM6/19/06
to
Да имеет. С древовидными запросами в 9.2.0.7 нахимичили почти для каждой
OS. Только не забудь вернуть параметр взад если будешь делать экспорт
схем в которых есть вьюхи с древ. запросами.

Valera wrote:
> From: "Valera" <val...@ibd.ru>
>
> From: "Valera" <val...@ibd.ru>
>


--

With best wishes,
Olexandr Siroklyn

Olexandr Siroklyn

unread,
Jun 19, 2006, 3:37:38 AM6/19/06
to
alter system set "_OLD_CONNECT_BY_ENABLED"=true

Valera wrote:
> From: "Valera" <val...@ibd.ru>
>
> From: "Valera" <val...@ibd.ru>
>

0 new messages