powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопросы использования индексов при работе с иерархией типов в Oracle9
1 сообщений из 1, страница 1 из 1
Вопросы использования индексов при работе с иерархией типов в Oracle9
    #32142605
RAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую.
Столкнулся с интересной проблемой. Имеем иерархию типов:
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-м Ораклом на низком уровне, поделитесь информацией. Ссылками...
Спасибо.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопросы использования индексов при работе с иерархией типов в Oracle9
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]