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

Откуда: Moscau
Сообщений: 102
Девятка где-то с 9.2.0.5 в системе перестала использовать функциональные индексы. Это баг или просто изменение работы оптимизатора, никто не знает? Простой пример:

create index my_idx on foo(mod(id,4))

analyze index my_idx compute statistics

select * from foo where mod(id,4) = :1

В 9.2.0.1 индекс используется, в 9.2.0.7 - нет (но по-моему раньше отвалилось, в пятерке вроде). Таблицы, ессно, одинаковые по размеру и наполнению и в .1 и в .7.

Никто не подскажет в чем беда, на металинке не смог найти :(
20 июл 06, 19:49    [2907137]     Ответить | Цитировать Сообщить модератору
 Re: Функциональные индексы  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18342
Jesterson
Никто не подскажет в чем беда, на металинке не смог найти :(

А у Вас все условия соблюдены? Например, query_rewrite разрешен...
Список можно найти в доке.
20 июл 06, 19:51    [2907146]     Ответить | Цитировать Сообщить модератору
 Re: Функциональные индексы  [new]
Jesterson
Member

Откуда: Moscau
Сообщений: 102
query_rewrite разрешен.

Фишка в том, что не менялось ничего кроме версии сервера ораклового.
20 июл 06, 19:58    [2907159]     Ответить | Цитировать Сообщить модератору
 Re: Функциональные индексы  [new]
Владимор Конев
Member

Откуда:
Сообщений: 3451
andrey_anonymous
Jesterson
Никто не подскажет в чем беда, на металинке не смог найти :(

А у Вас все условия соблюдены? Например, query_rewrite разрешен...
Список можно найти в доке.
query_rewrite - это для восмерки критичко. А в девятки и без него нормально работает.
21 июл 06, 05:03    [2908109]     Ответить | Цитировать Сообщить модератору
 Re: Функциональные индексы  [new]
Владимор Конев
Member

Откуда:
Сообщений: 3451
select count(1) as cnt,
       max((select value from v$parameter where name = 'query_rewrite_enabled')) as val_for_query_rewrite_enabled,
       max((select index_type from dba_indexes where index_name = 'M2_OPRS_DISCARD' and owner = 'KRAS')) as type_of_using_index,
       max((select version from v$instance)) as instance_version
  from kras.operations where case when lsop_cod != 3 then 1 else null end = 1

Query finished, retrieving results...

 CNT    VAL_FOR_QUERY_REWRITE_ENABLED   TYPE_OF_USING_INDEX     INSTANCE_VERSION
-----   -----------------------------   ---------------------   ----------------
71032   FALSE                           FUNCTION-BASED NORMAL   9.2.0.6.0

1 row(s) retrieved

  ------------------------------------------------------------
    
  Statement Id=3   Type=FIXED TABLE
  Cost=11  TimeStamp=21-07-06::09::11:06
  
       (1)  SELECT STATEMENT  CHOOSE 
     Est. Rows: 1  Cost: 1
       (4)  NESTED LOOPS 
     Est. Rows: 1  Cost: 22
           (2)  FIXED TABLE FULL SYS.X$KSPPI 
                Est. Rows: 1  Cost: 11
           (3)  FIXED TABLE FIXED INDEX SYS.X$KSPPCV (ind:2) 
                Est. Rows: 1  Cost: 11
       (30)  NESTED LOOPS OUTER 
     Est. Rows: 1  Cost: 10
           (27)  NESTED LOOPS OUTER 
                Est. Rows: 1  Cost: 9
               (24)  NESTED LOOPS 
                    Est. Rows: 1  Cost: 8
                   (21)  NESTED LOOPS 
                        Est. Rows: 1  Cost: 7
                       (18)  NESTED LOOPS OUTER 
                            Est. Rows: 1  Cost: 6
                           (15)  NESTED LOOPS OUTER 
                                Est. Rows: 1  Cost: 5
                               (12)  NESTED LOOPS 
                                    Est. Rows: 1  Cost: 4
                                   (9)  NESTED LOOPS 
                                        Est. Rows: 1  Cost: 3
                                       (6)  TABLE ACCESS BY INDEX ROWID SYS.USER$  [Analyzed] 
                                       (6)   Blocks: 4 Est. Rows: 1 of 67  Cost: 1 
                                            Tablespace: SYSTEM
                                           (5)  UNIQUE INDEX UNIQUE SCAN SYS.I_USER1  [Analyzed] 
                                                Est. Rows: 1
                                       (8)  TABLE ACCESS BY INDEX ROWID SYS.OBJ$  [Analyzed] 
                                       (8)   Blocks: 403 Est. Rows: 1 of 33 608  Cost: 2 
                                            Tablespace: SYSTEM
                                           (7)  UNIQUE INDEX RANGE SCAN SYS.I_OBJ2  [Analyzed] 
                                                Est. Rows: 1  Cost: 1
                                   (11)  TABLE ACCESS BY INDEX ROWID SYS.IND$  [Analyzed] 
                                   (11)   Blocks: 591 Est. Rows: 1 of 2 115  Cost: 1 
                                        Tablespace: SYSTEM
                                       (10)  UNIQUE INDEX UNIQUE SCAN SYS.I_IND1  [Analyzed] 
                                            Est. Rows: 1
                               (14)  TABLE ACCESS CLUSTER SYS.TS$  [Analyzed] 
                               (14)   Blocks: 20 Est. Rows: 1 of 18  Cost: 1 
                                    Tablespace: SYSTEM
                                   (13)  NON-UNIQUE INDEX UNIQUE SCAN SYS.I_TS#  [Analyzed] 
                                        Est. Rows: 1
                           (17)  TABLE ACCESS CLUSTER SYS.SEG$  [Analyzed] 
                           (17)   Blocks: 111 Est. Rows: 1 of 3 788  Cost: 1 
                                Tablespace: SYSTEM
                               (16)  NON-UNIQUE INDEX UNIQUE SCAN SYS.I_FILE#_BLOCK#  [Analyzed] 
                                    Est. Rows: 1
                       (20)  TABLE ACCESS BY INDEX ROWID SYS.OBJ$  [Analyzed] 
                       (20)   Blocks: 403 Est. Rows: 1 of 33 608  Cost: 1 
                            Tablespace: SYSTEM
                           (19)  UNIQUE INDEX UNIQUE SCAN SYS.I_OBJ1  [Analyzed] 
                                Est. Rows: 1
                   (23)  TABLE ACCESS CLUSTER SYS.USER$  [Analyzed] 
                   (23)   Blocks: 4 Est. Rows: 1 of 67  Cost: 1 
                        Tablespace: SYSTEM
                       (22)  NON-UNIQUE INDEX UNIQUE SCAN SYS.I_USER#  [Analyzed] 
                            Est. Rows: 1
               (26)  TABLE ACCESS BY INDEX ROWID SYS.OBJ$  [Analyzed] 
               (26)   Blocks: 403 Est. Rows: 1 of 33 608  Cost: 1 
                    Tablespace: SYSTEM
                   (25)  UNIQUE INDEX UNIQUE SCAN SYS.I_OBJ1  [Analyzed] 
                        Est. Rows: 1
           (29)  TABLE ACCESS CLUSTER SYS.USER$  [Analyzed] 
           (29)   Blocks: 4 Est. Rows: 1 of 67  Cost: 1 
                Tablespace: SYSTEM
               (28)  NON-UNIQUE INDEX UNIQUE SCAN SYS.I_USER#  [Analyzed] 
                    Est. Rows: 1
       (32)  SORT AGGREGATE 
     Est. Rows: 1
           (31)  NON-UNIQUE INDEX RANGE SCAN KRAS.M2_OPRS_DISCARD  [Analyzed] 
                Est. Rows: 1  Cost: 1


-----------------------------------------------------------------------------------------------------------------------------------------
З.Ы.
Неспешно ищу работу, согласен на переезд в Москву или Питер
21 июл 06, 05:17    [2908113]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить