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

Откуда: St.John,NB,CA
Сообщений: 5532
Есть базовый объект например Tmyobject
И таблица mytable of Tmyobject
Наследую другой объект Tsecondobject under Tmyobject
У него один из атрибутов nested table , для хранения данных которой оракл создал табличку с названием SYSNT*****
План запроса к таблице mytable показывает full scan на SYSNT*****

Как узнать есть ли индексы на таблицу SYSNT***** по nested_table_id ? Табличка SYSNT***** в all_tables не присутствует. Если оно автоматом не индексируется как проиндексировать (имена-то генерятся ораклом)?

TABLE ACCESS FULL Object name=SYSNTpuVztE1lRauQwbfcANACRA== Cost=3 Cardinality=1 Bytes=36 Filter predicates="SYSNTpuVztE1lRauQwbfcANACRA=="."NESTED_TABLE_ID"=:B1

TABLE ACCESS FULL Object name=SYSNT4vJasXXXQXqDNbyjWfkc5A== Cost=3 Cardinality=1 Bytes=14 Filter predicates="SYSNT4vJasXXXQXqDNbyjWfkc5A=="."NESTED_TABLE_ID"=:B1

TABLE ACCESS FULL Object name=SYSNTPXDM+1eHTS62Jo2GhEcr6w== Cost=3 Cardinality=1 Bytes=36 Filter predicates="SYSNTPXDM+1eHTS62Jo2GhEcr6w=="."NESTED_TABLE_ID"=:B1

TABLE ACCESS FULL Object name=SYSNTYwSAtUuRR5e+lfD9AUXi2g== Cost=3 Cardinality=1 Bytes=115 Filter predicates="SYSNTYwSAtUuRR5e+lfD9AUXi2g=="."NESTED_TABLE_ID"=:B1

TABLE ACCESS FULL Object name=SYSNTpuVztE1lRauQwbfcANACRA== Cost=3 Cardinality=1 Bytes=36 Filter predicates="SYSNTpuVztE1lRauQwbfcANACRA=="."NESTED_TABLE_ID"=:B1

TABLE ACCESS FULL Object name=SYSNT4vJasXXXQXqDNbyjWfkc5A== Cost=3 Cardinality=1 Bytes=14 Filter predicates="SYSNT4vJasXXXQXqDNbyjWfkc5A=="."NESTED_TABLE_ID"=:B1

TABLE ACCESS FULL Object name=SYSNTPXDM+1eHTS62Jo2GhEcr6w== Cost=3 Cardinality=1 Bytes=36 Filter predicates="SYSNTPXDM+1eHTS62Jo2GhEcr6w=="."NESTED_TABLE_ID"=:B1
6 дек 07, 09:31    [5010136]     Ответить | Цитировать Сообщить модератору
 Re: Индексы на nested table  [new]
Змей Равниныч
Member

Откуда: Из тридевятого царства
Сообщений: 284
Журавлев Денис
У него один из атрибутов nested table
За такие вещи надо убивать на месте...
6 дек 07, 09:51    [5010216]     Ответить | Цитировать Сообщить модератору
 Re: Индексы на nested table  [new]
Splain
Member

Откуда: Череповец
Сообщений: 924
Не совсем nested table.

SQL> create or replace type TCustomTaxRate as object(
  2    tr_id              number(12)
  3    ) not final not instantiable;
  4  /

Type created.

SQL> 
SQL> create table dat_tax_rates of TCustomTaxRate
  2  ;

Table created.

SQL> 
SQL> create or replace type TCashlessServiceTaxItem is object(
  2    ord_num            integer         /* порядковый номер */
  3    );
  4  /

Type created.

SQL> 
SQL> create or replace type TCashlessServiceTaxes is table of TCashlessServiceTaxItem;
  2  /

Type created.

SQL> 
SQL> create or replace type TCashlessServiceTax under TCustomTaxRate(
  2    tax_list           TCashlessServiceTaxes
  3    )
  4    not final instantiable;
  5  /

Type created.

SQL> 
SQL> explain plan for select value(p) from dat_tax_rates p;

Explained.

SQL> 
SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT                                                               
--------------------------------------------------------------------------------
| Id  | Operation            |  Name                          | Rows  | Bytes | Cost  |                                                                         
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |                                |       |       | 
|* 1  |  TABLE ACCESS FULL  | SYSNTAJmOajqQTHaBrlyMveIfCg==  |       |       | 
|   2 |  TABLE ACCESS FULL  | DAT_TAX_RATES                  |       |       | 

Predicate Information (identified by operation id):                             
---------------------------------------------------                             
                                                                                
   1 - filter("SYSNTAJmOajqQTHaBrlyMveIfCg=="."NESTED_TABLE_ID"=:B1)            
                                                                                
Note: rule based optimization                                                   

15 rows selected.

SQL> 
SQL> drop table dat_tax_rates;

Table dropped.

SQL> 
SQL> drop type TCashlessServiceTax;

Type dropped.

SQL> 
SQL> drop type TCashlessServiceTaxes;

Type dropped.

SQL> 
SQL> drop type TCashlessServiceTaxItem;

Type dropped.

SQL> 
SQL> drop type TCustomTaxRate;

Type dropped.


Вобщем, вопрос - каков механизм реализации операции value и как избежать table access full на создаваемой ораклом NT?
6 дек 07, 15:50    [5013544]     Ответить | Цитировать Сообщить модератору
 Re: Индексы на nested table  [new]
Splain
Member

Откуда: Череповец
Сообщений: 924
Задали вопрос в техподдержку.

РД-ТЕХ, как всегда, на высоте.

Надо просто не бояться создать индекс по полю nested_table_id самостоятельно.

CREATE INDEX taxes_ind ON "SYSNTAJmOajqQTHaBrlyMveIfCg==" (nested_table_id);
7 дек 07, 15:39    [5019166]     Ответить | Цитировать Сообщить модератору
 Re: Индексы на nested table  [new]
Змей Равниныч
Member

Откуда: Из тридевятого царства
Сообщений: 284
Splain
Задали вопрос в техподдержку.

РД-ТЕХ, как всегда, на высоте.

Надо просто не бояться создать индекс по полю nested_table_id самостоятельно.
Для начала надо попробовать не создавать NESTED TABLES :)

P.S. РДТЕХ пишется слитно :)
7 дек 07, 15:48    [5019267]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить