Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 HINT в плане запроса  [new]
Zalm
Member

Откуда: Москва
Сообщений: 1927
Указываю в запросе хинт, а в плане запроса он попросту не отображается, почему? или так и должно быть?

Картинка с другого сайта.
2 фев 15, 10:18    [17204776]     Ответить | Цитировать Сообщить модератору
 Re: HINT в плане запроса  [new]
х.з.
Member

Откуда:
Сообщений: 765
а если в скобочках алиас вмето таблицы указать?

дока
Because the employees table has alias e the hint must refer to the table by its alias rather than by its name. Also, do not specify schema names in the hint even if they are specified in the FROM clause.
2 фев 15, 10:27    [17204827]     Ответить | Цитировать Сообщить модератору
 Re: HINT в плане запроса  [new]
Zalm
Member

Откуда: Москва
Сообщений: 1927
х.з.,

весомо, спасибо)

Картинка с другого сайта.
2 фев 15, 10:29    [17204837]     Ответить | Цитировать Сообщить модератору
 Re: HINT в плане запроса  [new]
Zalm
Member

Откуда: Москва
Сообщений: 1927
х.з.,

а Cache/No_cache должен что-то отображать?)

Картинка с другого сайта.
2 фев 15, 10:31    [17204856]     Ответить | Цитировать Сообщить модератору
 Re: HINT в плане запроса  [new]
Elic
Member

Откуда:
Сообщений: 29988
Zalm
а Cache/No_cache должен что-то отображать?)
Метод тыка?

P.S. Хинты в плане не отображаются.
2 фев 15, 10:42    [17204921]     Ответить | Цитировать Сообщить модератору
 Re: HINT в плане запроса  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
Elic
P.S. Хинты в плане не отображаются.
но есть секция OUTLINE, в которой можно посмотреть хинты реального плана.
2 фев 15, 10:45    [17204943]     Ответить | Цитировать Сообщить модератору
 Re: HINT в плане запроса  [new]
х.з.
Member

Откуда:
Сообщений: 765
Zalm
а Cache/No_cache должен что-то отображать?)

а чтобы ты хотел чтобы он отобразил? :)

мне вот стало интересно ,я открыл Performance Tuning Guide and Reference и освежил про алиасы. про cache сам почитай.
2 фев 15, 10:46    [17204954]     Ответить | Цитировать Сообщить модератору
 Re: HINT в плане запроса  [new]
Zalm
Member

Откуда: Москва
Сообщений: 1927
х.з.
Zalm
а Cache/No_cache должен что-то отображать?)

а чтобы ты хотел чтобы он отобразил? :)

мне вот стало интересно ,я открыл Performance Tuning Guide and Reference и освежил про алиасы. про cache сам почитай.


Ну вот и хотел узнать, показывает ли что-то и что показывает)))

Elic
Zalm
а Cache/No_cache должен что-то отображать?)
Метод тыка?

P.S. Хинты в плане не отображаются.


Смотрю рекомендации по использованию хинтов, и проверяю по очереди ознакамливаюсь)
2 фев 15, 10:54    [17205032]     Ответить | Цитировать Сообщить модератору
 Re: HINT в плане запроса  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
xtender
Elic
P.S. Хинты в плане не отображаются.
но есть секция OUTLINE, в которой можно посмотреть хинты реального плана.

А вот как их отличить от "самостоятельного" решения оптимизатора ?

SQL> create table x as select level x from dual connect by level <=1000;

Table created.

SQL> create index i_x on x(x);

Index created.

SQL> select x from x where x=1;

         X
----------
         1

SQL> select * from table(dbms_xplan.display_cursor(format=>'OUTLINE'));

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------

SQL_ID  3vzmv24ufaf0y, child number 0
-------------------------------------
select x from x where x=1

Plan hash value: 800014442

-------------------------------------------------------------------------
| Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------
|   0 | SELECT STATEMENT |      |       |       |     1 (100)|          |
|*  1 |  INDEX RANGE SCAN| I_X  |     1 |     4 |     1   (0)| 00:00:01 |
-------------------------------------------------------------------------

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('11.2.0.3')
      DB_VERSION('11.2.0.3')
      ALL_ROWS
      OUTLINE_LEAF(@"SEL$1")
      INDEX(@"SEL$1" "X"@"SEL$1" ("X"."X"))
      END_OUTLINE_DATA
  */

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

   1 - access("X"=1)


32 rows selected.

SQL> select /*+ full(x)*/ x from x where x=1;

         X
----------
         1

SQL> select * from table(dbms_xplan.display_cursor(format=>'OUTLINE'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------

SQL_ID  b1w10uqzkbvth, child number 0
-------------------------------------
select /*+ full(x)*/ x from x where x=1

Plan hash value: 2941724873

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |       |       |     2 (100)|          |
|*  1 |  TABLE ACCESS FULL| X    |     1 |     4 |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('11.2.0.3')
      DB_VERSION('11.2.0.3')
      ALL_ROWS
      OUTLINE_LEAF(@"SEL$1")
      FULL(@"SEL$1" "X"@"SEL$1")
      END_OUTLINE_DATA
  */

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

   1 - filter("X"=1)


32 rows selected.


SQL> drop index i_x;

Index dropped.

SQL> select x from x where x=1;

         X
----------
         1

SQL> select * from table(dbms_xplan.display_cursor(format=>'OUTLINE'));

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------

SQL_ID  3vzmv24ufaf0y, child number 0
-------------------------------------
select x from x where x=1

Plan hash value: 2941724873

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |       |       |     2 (100)|          |
|*  1 |  TABLE ACCESS FULL| X    |     1 |     4 |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('11.2.0.3')
      DB_VERSION('11.2.0.3')
      ALL_ROWS
      OUTLINE_LEAF(@"SEL$1")
      FULL(@"SEL$1" "X"@"SEL$1")
      END_OUTLINE_DATA
  */

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

   1 - filter("X"=1)


32 rows selected.
2 фев 15, 11:33    [17205295]     Ответить | Цитировать Сообщить модератору
 Re: HINT в плане запроса  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
pravednik
А вот как их отличить от "самостоятельного" решения оптимизатора ?
строго говоря, без 10053 трассы никак, да и в 10053 все не совсем просто несмотря на то, что там есть секция "Dumping Hints"
например, в этих двух случаях все хинты реально сдампились:
Dumping Hints
=============
  atom_hint=(@=ffffffff7dfd7090 err=0 resol=1 used=1 token=1111 org=1 lvl=3 txt=NO_ELIMINATE_JOIN ("N") )
====================== END SQL Statement Dump ======================

Dumping Hints
=============
  atom_hint=(@=ffffffff7a6f6cb0 err=0 resol=1 used=0 token=924 org=1 lvl=3 txt=USE_NL ("CNT") )
  atom_hint=(@=ffffffff7a6f7d00 err=0 resol=1 used=0 token=895 org=1 lvl=3 txt=PUSH_PRED ("CNT") )
  atom_hint=(@=ffffffff7a6ff158 err=0 resol=1 used=0 token=1083 org=1 lvl=2 txt=NO_USE_HASH_AGGREGATION )
  atom_hint=(@=ffffffff7b215138 err=0 resol=1 used=0 token=895 org=1 lvl=3 txt=PUSH_PRED ("CNT") )
  atom_hint=(@=ffffffff7b2152d8 err=0 resol=1 used=1 token=924 org=1 lvl=3 txt=USE_NL ("CNT") )
  atom_hint=(@=ffffffff7b216c30 err=0 resol=1 used=1 token=1083 org=1 lvl=2 txt=NO_USE_HASH_AGGREGATION )
====================== END SQL Statement Dump ======================


а вот тут они сгенерированы самим CBO, да еще и помечены как неиспользуемые :)
Dumping Hints
=============
  atom_hint=(@=ffffffff7dfb69a8 err=0 resol=1 used=0 token=819 org=1 lvl=3 txt=CACHE_TEMP_TABLE ("T1") )
  atom_hint=(@=ffffffff7dfb7f80 err=0 resol=1 used=0 token=819 org=1 lvl=3 txt=CACHE_TEMP_TABLE ("T1") )
  atom_hint=(@=ffffffff7dfb94d8 err=0 resol=1 used=0 token=819 org=1 lvl=3 txt=CACHE_TEMP_TABLE ("T1") )
  atom_hint=(@=ffffffff7dfbaa40 err=0 resol=1 used=0 token=819 org=1 lvl=3 txt=CACHE_TEMP_TABLE ("T1") )
  atom_hint=(@=ffffffff7b212418 err=0 resol=1 used=0 token=819 org=1 lvl=3 txt=CACHE_TEMP_TABLE ("T1") )
====================== END SQL Statement Dump ======================

Кроме того, если был хинт OPT_PARAM то нужно смотреть в секцию "PARAMETERS IN OPT_PARAM HINT"
2 фев 15, 12:01    [17205553]     Ответить | Цитировать Сообщить модератору
 Re: HINT в плане запроса  [new]
Zalm
Member

Откуда: Москва
Сообщений: 1927
Еще тогда вопрос с тему

select /*+ Index_FFS(sub x_subject_country) */ Count(1) from subject sub where sub.countryisn=2570

select  Count(1) from subject sub where sub.countryisn=2570


Правильно ли я понимаю что при использовании FFS и Count(), вся ситуация должна быстрее обрабатываться за счет того что оракл не будет производить чтение таблицы, а будет работать только с индексом? либо я путаю?

Где-то читал статью что если искать просто Count то в сочетании с какими-то хинтами вся работа будет только с индексом... пытаюсь вспомнить подробнее как было, потому что статью не могу найти.
2 фев 15, 14:24    [17206765]     Ответить | Цитировать Сообщить модератору
 Re: HINT в плане запроса  [new]
ora601
Member

Откуда:
Сообщений: 750
Zalm
Еще тогда вопрос с тему

select /*+ Index_FFS(sub x_subject_country) */ Count(1) from subject sub where sub.countryisn=2570

select  Count(1) from subject sub where sub.countryisn=2570


Правильно ли я понимаю что при использовании FFS и Count(), вся ситуация должна быстрее обрабатываться за счет того что оракл не будет производить чтение таблицы, а будет работать только с индексом? либо я путаю?

Где-то читал статью что если искать просто Count то в сочетании с какими-то хинтами вся работа будет только с индексом... пытаюсь вспомнить подробнее как было, потому что статью не могу найти.

В большинстве случаев и без хинта оптимизатор выберет IFFS. Да правильно.
2 фев 15, 16:01    [17207383]     Ответить | Цитировать Сообщить модератору
 Re: HINT в плане запроса  [new]
Zalm
Member

Откуда: Москва
Сообщений: 1927
ora601
Zalm
Еще тогда вопрос с тему

select /*+ Index_FFS(sub x_subject_country) */ Count(1) from subject sub where sub.countryisn=2570

select  Count(1) from subject sub where sub.countryisn=2570


Правильно ли я понимаю что при использовании FFS и Count(), вся ситуация должна быстрее обрабатываться за счет того что оракл не будет производить чтение таблицы, а будет работать только с индексом? либо я путаю?

Где-то читал статью что если искать просто Count то в сочетании с какими-то хинтами вся работа будет только с индексом... пытаюсь вспомнить подробнее как было, потому что статью не могу найти.

В большинстве случаев и без хинта оптимизатор выберет IFFS. Да правильно.


По моему опыту сколько я это видел, всегда исключительно Index Range Scan без хинта
2 фев 15, 16:39    [17207648]     Ответить | Цитировать Сообщить модератору
 Re: HINT в плане запроса  [new]
Melkomyagkii_newbi
Member

Откуда: из прошлого
Сообщений: 1862
ora601
Zalm
Еще тогда вопрос с тему


select /*+ Index_FFS(sub x_subject_country) */ Count(1) from subject sub where sub.countryisn=2570

select Count(1) from subject sub where sub.countryisn=2570



Правильно ли я понимаю что при использовании FFS и Count(), вся ситуация должна быстрее обрабатываться за счет того что оракл не будет производить чтение таблицы, а будет работать только с индексом? либо я путаю?

Где-то читал статью что если искать просто Count то в сочетании с какими-то хинтами вся работа будет только с индексом... пытаюсь вспомнить подробнее как было, потому что статью не могу найти.

В большинстве случаев и без хинта оптимизатор выберет IFFS. Да правильно.


ИМХО тут не факт, что FFS лучше range scanа.
3 фев 15, 14:05    [17211844]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить