![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
Elnarka |
|
||||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 13.2.2008 Репутация: нет Всего: нет |
Здравствуйте.У меня есть вот такой запрос:
Никак не выполняется. План таков.
Вобще.Где можно получить хорошую информацию про оптимизацию?Несовсем понимаю |
||||
|
|||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
1) дайте информацию о количестве строк в каждой из таблиц:
dwh.fct_charge_prc dwh.con_ass_contr_acc dwh.det_contracts dwh.con_ass_acc dwh.det_ord_liab dwh.det_source 2) сколько строк возвращает этот селест:
3) вы принципиально используете ansi синтаксис (join)? можно увидеть план запроса без использования join?! Это сообщение отредактировал(а) DimW - 29.4.2008, 09:32 |
|||
|
||||
Elnarka |
|
||||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 13.2.2008 Репутация: нет Всего: нет |
dwh.fct_charge_prc - около 4 млн
dwh.con_ass_contr_acc - около 4 млн dwh.det_contracts - 2 млн dwh.con_ass_acc - 4 млн dwh.det_ord_liab - 1 млн dwh.det_source - 100 записей Запрос возврашает около 2000 записей Без использования join
Добавлено @ 10:12 Запрос соответствующий последнему плану таков
|
||||
|
|||||
DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
Elnarka, покажи план этого запроса:
именно этого! и за какое время он выполняется? есть подозрение что во всем виноват distinct который приводит к сортировке подселекта. Добавлено через 5 минут и 34 секунды да и трассировку посмотреть бы не мешало. возможно слишком много дисковых чтений. |
|||
|
||||
Elnarka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 13.2.2008 Репутация: нет Всего: нет |
План вашего запроса таков
SELECT STATEMENT, GOAL = CHOOSE Cost=139 Cardinality=1 Bytes=159 SORT AGGREGATE Cardinality=1 Bytes=159 MERGE JOIN CARTESIAN Cost=139 Cardinality=23 Bytes=3657 NESTED LOOPS Cost=11 Cardinality=1 Bytes=137 NESTED LOOPS Cost=9 Cardinality=1 Bytes=118 NESTED LOOPS Cost=7 Cardinality=1 Bytes=74 NESTED LOOPS Cost=6 Cardinality=1 Bytes=61 TABLE ACCESS BY INDEX ROWID Object name=CON_ASS_CONTR_ACC Cost=5 Cardinality=1 Bytes=33 INDEX RANGE SCAN Object name=AK_ASS_CONTR Cost=3 Cardinality=1 TABLE ACCESS BY INDEX ROWID Object owner=DWH Object name=DET_CONTRACTS Cost=1 Cardinality=1 Bytes=28 INDEX UNIQUE SCAN Object name=PK_DET_CONTRACTS Cardinality=1 TABLE ACCESS BY INDEX ROWID Object name=DET_SOURCE Cost=1 Cardinality=1 Bytes=13 INDEX UNIQUE SCAN Object name=PK_DET_SOURCE Cardinality=1 TABLE ACCESS BY GLOBAL INDEX ROWID Object name=FCT_CHARGE_PRC Cost=2 Cardinality=1 Bytes=44 INDEX RANGE SCAN Object name=AK_CHARGE_PRC_FCT_CHAR Cost=1 Cardinality=15 TABLE ACCESS BY INDEX ROWID Object name=DET_ORD_LIAB Cost=2 Cardinality=1 Bytes=19 INDEX UNIQUE SCAN Object name=PK_DET_ORD_LIAB Cost=1 Cardinality=1 BUFFER SORT Cost=137 Cardinality=215 Bytes=4730 TABLE ACCESS BY INDEX ROWID Object name=CON_ASS_ACC Cost=128 Cardinality=215 Bytes=4730 INDEX RANGE SCAN Object name=RELATION_11401_FK Cost=2 Cardinality=215 выполнился за 1810.953 ыулгтв Извините(простите за такой вопрос),а как трассировку посмотреть? )) |
|||
|
||||
DimW |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
да, очень долго. без трассировки дальнейшие попытки не имеют смысла. попытаюсь объяснить. все действия делаются в одной сесии! 1) включаем трассировку:
2) выполняешь свой запрос, и ждешь окончания результата. 3) выполняешь след. запрос чтобы получить путь и имя твоего файла с тарссировкой:
это путь к файлу на сервере БД 4) закрываешь трассировку:
и так ты получишь файл трассироки, но для его изучения необходимо еще предпринять пару шагов. в ORACLE_HOME\BIN есть програмулина tkprof.exe при помощи нее можно получить читабельный файл оформив батник такова вида:
trc_report.prt это файлик который будет создан после выполнения этого батника. его то и следует изучить. надеюсь объяснил доходчиво. |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "Oracle" | |
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Oracle | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |