|
Схема с NESTED TABLES работает непозволительно медленно.
|
|||
---|---|---|---|
#18+
В обычной схеме две таблицы PARENT_TABLE и CHILD_TABLE связаны через столбец OBJECT_ID. Например, хочется найти те строки PARENT_TABLE, у которых в CHILD_TABLE в столбце COLUMN есть значения 1 и 2. Один из возможных вариантов (вариант 1): Код: plaintext 1. 2. 3. 4. 5. 6.
или (вариант 2) Код: plaintext 1. 2. 3. 4. 5. 6.
Увидел я NESTED TABLES и сделал схему со встроенной таблицей, где поиск, получается, должен выглядеть так (вариант 1): Код: plaintext 1. 2. 3. 4. 5.
или (вариант 2) Код: plaintext 1. 2. 3. 4. 5. 6.
Как сказал выше, схема с NESTED TABLES ищет очень долго. Встроенная таблица является INDEX-ORGANIZED, естественно проиндексирована по NESTED_TABLE_ID и COLUMN. ALWAYS_SEMI_JOIN (как рекомендует документация) ставил и MERGE, и HASH. Всё без толку. Статистика по таблицам собрана и оценена. EXECUTE PLAN для варианта 1 выглядит так: Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT GOAL: CHOOSE 0 MERGE JOIN 0 SORT (JOIN) 0 NESTED LOOPS 0 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'PROPERTIES_NESTED_VALUE_ID' (NON-UNIQUE) 0 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'GLOBAL_OBJECT_NESTED' 0 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'SYS_C007194' (UNIQUE) 0 SORT (JOIN) 0 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'PROPERTIES_NESTED_VALUE_ID' (NON-UNIQUE) На обычной "плоской" схеме всё работает более-менее терпимо. Во "встроенной" надолго зависает. Содержимое таблиц одно и то же. Может есть какой-нибудь хитрый синтаксис для схем со встроенными таблицами? Или бросить её нафиг, а? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2002, 20:17 |
|
|
start [/forum/topic.php?fid=52&fpage=2827&tid=1992526]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 115ms |
0 / 0 |