J3utajisi
Дата: 25.11.2009 15:49:06
Есть запрос:
select clm.claim_id,
clm.date_create,
clm.date_exec,
clm.date_plan,
clm.user_id,
test.num,
u.name username,
c.nmb,
o2.name oper_responsible,
test.contacts,
u.account account,
ct.name test_type,
cc.name test_type_category,
sk.name service_kind,
ssk.code subservice_code,
ssk.name subservice_kind,
crt.name clamer_type,
test.text_test text_test,
ch.name channel,
test.incoming_num,
test.responsible_id,
test.channel_id,
test.date_closed
from test_test test
LEFT JOIN t_users u ON u.user_id = test.user_id
LEFT JOIN o_contract c ON u.user_id = c.user_id
LEFT JOIN test_executive e2 ON e2.executive_id = test.responsible_id
LEFT JOIN t_operators o2 ON o2.oper_id = e2.oper_id
LEFT JOIN test_test_type ct ON test.test_type_id = ct.test_type_id
LEFT JOIN test_test_category cc ON ct.test_category_id = cc.test_category_id
LEFT JOIN test_service_kind sk ON test.service_kind_id = sk.service_kind_id
LEFT JOIN test_subservice_kind ssk ON test.subservice_kind_id = ssk.subservice_kind_id
LEFT JOIN test_tester_type crt ON test.tester_type_id = crt.tester_type_id
LEFT JOIN test_channel ch ON ch.channel_id = test.channel_id
В каждой таблице по несколько миллионов записей, он используется в качестве журнала, где есть функция фильтрация почти по всем параметрам.
Сейчас запрос и сткрока WHERE ... формируются на сервере приложений и весь запрос передается на оракловую базу и он выполнятется допустим 15 сек. В PL/SQL Developer'e этот же запрос выполнятся за секунд 5-10.
Подскажите, что сделать, чтобы увеличить скорость запроса в целом и его вывод клиенту, может сделать view или pipelined функцию. Что может повысить производительность в данной ситуации?
4ton
Дата: 26.11.2009 09:41:27
J3utajisi,
Вам orawish по существу и сказал. Раз запрос выполняется по-разному - значит у него разные планы выполнения в этих двух случаях. Нужно снять трассировку и сравнить планы. "Плохой" план подправить хинтами (hints)