|
|
|
Вопросы использования индексов при работе с иерархией типов в Oracle9
|
|||
|---|---|---|---|
|
#18+
Приветствую. Столкнулся с интересной проблемой. Имеем иерархию типов: CREATE TYPE TClass AS OBJECT ( A1 VARCHAR2(30), A2 Date) NOT FINAL; CREATE TYPE TChild UNDER TClass ( A3 float, A4 VARCHAR2(30)) NOT FINAL; CREATE TYPE TSecondChild UNDER TChild ( A5 float) NOT FINAL; -- таблица на основе root-типа CREATE TABLE Class1 OF TClass; -- создаем индекс для столбца А3 CREATE INDEX i_class1_a3 ON class1 c (TREAT(VALUE(c) AS Tchild).A3); Если делать выборку, основываясь искл.на знании структуры конечного класса - в нашем случае TSecondChild - получаем проблему того, что индекс на столбец A3 не используется. Пр-р: Select TREAT(Value(c) as TSecondChild) FROM Class1 C WHERE TREAT(VALUE(c) As TSecondChild).A3 = 1 and VALUE(c) IS OF (ONLY TSecondChild); Но индекс начинает использоваться, если произвести запрос с указанием того типа, на столбец которого был построен индекс Select TREAT(Value(c) as TSecondChild) FROM Class1 C WHERE TREAT(VALUE(c) As TChild).A3 = 1 -- указан TChild вместо TSecondChild! and VALUE(c) IS OF (ONLY TSecondChild); Честно говоря не хочется каждый раз при наложении условий заботиться о том, какому типу в иерархии принадлежит данный атрибут (тем более если иерархия большая), а всегда работать только с нижним типом... Что делать? Господа, если кто нибудь знаком с устройством хранения объектов 9-м Ораклом на низком уровне, поделитесь информацией. Ссылками... Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2003, 19:01 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=2788&tid=1990961]: |
0ms |
get settings: |
5ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
17ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 361ms |

| 0 / 0 |
