Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / табличные конвейерные функции тормоза на разный базах / 18 сообщений из 18, страница 1 из 1
09.04.2019, 18:24
    #39798995
ilyuha111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
Имеются 2 примерно одинаковые по объему базы oracle 11xe 64bit
есть пакет который выдает таблицу
select * from table(pk_salary.salary_view) order by 1
на одной базе выполняется за 1,23с на другой 135,3с куда копать не понятно планы выглядят одинаково

Description Object owner Object name Cost Cardinality Bytes
SELECT STATEMENT, GOAL = CHOOSE
SORT ORDER BY
COLLECTION ITERATOR PICKLER FETCH PK_SALARY SALARY_VIEW

покажите в каком направлении копать

накатывали этот запрос примерно на 200 баз в сети
где в 15 базах обнаружены тормоза
никакой закономерности обнаружить не удалось
...
Рейтинг: 0 / 0
09.04.2019, 18:25
    #39798996
ilyuha111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
Всем добрый день!!
забыл написать :)
...
Рейтинг: 0 / 0
09.04.2019, 18:29
    #39798997
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
IMHO PL SQL Developer - Profiller
...
Рейтинг: 0 / 0
09.04.2019, 19:05
    #39799020
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
ilyuha111в каком направлении копатьЭто невообразимо сложно понять, что в
ilyuha111пакет который выдает таблицу
...
Рейтинг: 0 / 0
09.04.2019, 19:31
    #39799027
ilyuha111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
сделал но понятней от этого не стало

-- Created on 09.04.2019 by ANT
declare
-- Local variables here
i integer;
begin
-- Test statements here

for c in (select * from table(pk_salary.salary_view(v_salary_head_id => :v_salary_head_id,
v_product_id => :v_product_id))
) loop
null;
end loop;


end;
сделал вот такой скрипт

PK_SALARY 631 134 548 9264 for cc in (select sr.salary_rule_id , -- база с тормозами

PK_SALARY 631 257 7002 for cc in (select sr.salary_rule_id , -- база без тормозов
...
Рейтинг: 0 / 0
09.04.2019, 19:33
    #39799029
ilyuha111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
В пакетах ничего интересного нет
вот тексет
type salary_rec is record(
product_id t_product.product_id%type,
sum_w_nds number,
zp_fond number,
zp_kass number,
zp_zav number
);
type salary_tab is table of salary_rec;

function salary_view(
v_salary_head_id t_salary_head.salary_head_id%type default null,
v_product_id t_product.product_id%type default null
)
return salary_tab pipelined
as
TYPE cur_typ IS REF CURSOR;
c cur_typ;

bc_roznica_rec type_roznica_rec;
bc1_roznica_rec roznica_rec ;

i number;
bc_salary_tab salary_tab;
bc_salary_rec salary_rec;
vl_sql varchar2(30000);
vl_name_search_stub varchar2(3000);
vl_name_search_condition varchar2(3000);
vl_salary_rule_priority number;
vl_salary_rule_type_id number;
vl_serial_value number;
vl_salary_summ number;
vl_salary_rule_paralel number;
vl_salary_rule_name t_salary_rule.salary_rule_name%type;
vl_salary_rule_type_name t_salary_rule_type.salary_rule_type_name%type;
vl_product_id varchar2(32000);
vl_partner_params_id varchar2(32000);
vl_partner_params_id1 varchar2(32000);
vl_bonus_zav number;
vl_partner number;
vl_base_zp_err number;



begin
vl_product_id :='';
if v_product_id is not null then
vl_product_id :='and i.product_id ='||v_product_id;
end if;
vl_partner := organiz.pk_system.GetMyPartnerID;

vl_sql :=
'select s.product_id,' || chr(10) ||
' 1 as outcome_count,' || chr(10) ||
' max(s.outcome_price_one_w_nds) as sum_w_nds,' || chr(10) ||
' max(s.outcome_price_one_w_nds - i.income_price_w_nds) as sum_nac ,' || chr(10) ||
' max(pb.bonus_zav) as bonus_zav' || chr(10) ||
' from' || chr(10) ||
' t_sklad_state s,' || chr(10) ||
' t_income i,' || chr(10) ||
' t_partner_link_buh pb,' || chr(10) ||
' t_owner p' || chr(10) ||
' where' || chr(10) ||
' i.income_id = s.income_id' || chr(10) ||
' and s.product_count_sale>0' || chr(10) ||
vl_product_id || chr(10) ||
--' and i.product_id = 5100001333' || chr(10) ||
' and pb.partner_id = p.partner_id' || chr(10) ||
' GROUP BY' || chr(10) ||
' s.product_id'|| chr(10) ||
'';


--dbms_output.put_line(vl_sql) ;

OPEN c FOR vl_sql;
LOOP
FETCH c INTO bc1_roznica_rec;
EXIT WHEN c%NOTFOUND;
i:=0;
vl_base_zp_err :=0;
for cc in (select sr.salary_rule_id ,
sr.salary_head_id ,
sr.salary_rule_name ,
srt.salary_rule_type_name,
sr.salary_rule_priority ,
sr.salary_rule_paralel ,
sr.salary_rule_type_id ,
srpro.product_value
from t_salary_rule sr,
t_salary_head sh,
t_salary_rule_type srt,
t_salary_rule_product srpro,
t_salary_rule_partner srp
where srt.salary_rule_type_id = sr.salary_rule_type_id
and sr.salary_head_id = sh.salary_head_id
and srt.salary_rule_type_id = sr.salary_rule_type_id
and srp.salary_rule_id = sr.salary_rule_id
and srpro.salary_rule_id = sr.salary_rule_id
and srpro.product_id =bc1_roznica_rec.product_id
and srp.is_del_flag = 0
and srpro.is_del_flag = 0
and sr.is_del_flag = 0
and sh.is_del_flag = 0
and sh.document_status_id= 290102
and trunc(sysdate) between sr.salary_head_date_start and coalesce(sr.salary_head_date_end,sh.salary_head_date_end)
and srp.partner_id =vl_partner
order by sr.salary_rule_priority
) loop

i:=1;

if cc.salary_rule_type_id = 1 then
vl_salary_summ:= bc1_roznica_rec.sum_w_nds*cc.product_value/100;
end if;

if cc.salary_rule_type_id = 2 then
vl_salary_summ:= bc1_roznica_rec.sum_nac*cc.product_value/100;
end if;

if cc.salary_rule_type_id = 3 then
vl_salary_summ:= bc1_roznica_rec.outcome_count*cc.product_value;
end if;

if cc.salary_rule_type_id =4 then
vl_salary_summ:= bc1_roznica_rec.outcome_count*cc.product_value;
end if;

if cc.salary_rule_paralel = 1 then
vl_bonus_zav := bc1_roznica_rec.bonus_zav;
else
vl_bonus_zav := 0;
end if;
bc_salary_rec.product_id := bc1_roznica_rec.product_id;
bc_salary_rec.sum_w_nds := bc1_roznica_rec.sum_w_nds;
bc_salary_rec.zp_fond := vl_salary_summ;
bc_salary_rec.zp_kass := vl_salary_summ*(1-vl_bonus_zav/100);
bc_salary_rec.zp_zav := vl_salary_summ*(vl_bonus_zav/100);
pipe row(bc_salary_rec);
exit;
end loop;

if i=0 then
begin
select sr.salary_rule_priority,
sr.salary_rule_type_id,
sr.serial_value ,
sr.salary_rule_paralel
into
vl_salary_rule_priority,
vl_salary_rule_type_id ,
vl_serial_value ,
vl_salary_rule_paralel
from t_salary_rule sr,
t_salary_head sh,
t_salary_rule_type srt,
t_salary_rule_partner srp
where srt.salary_rule_type_id = sr.salary_rule_type_id
and sr.salary_rule_priority = 100 -- базовая зп на все товары код 100
and sr.salary_head_id = sh.salary_head_id
and srt.salary_rule_type_id = sr.salary_rule_type_id
and srp.salary_rule_id = sr.salary_rule_id
and srp.is_del_flag = 0
and sr.is_del_flag = 0
and sh.is_del_flag = 0
and sh.document_status_id= 290102
and trunc(sysdate) between sr.salary_head_date_start and coalesce(sr.salary_head_date_end,sh.salary_head_date_end)
and srp.partner_id =vl_partner;
exception
when too_many_rows then
vl_base_zp_err :=2;
when no_data_found then
vl_base_zp_err :=1;
when others then raise;
end;


if vl_base_zp_err = 0 then
if vl_salary_rule_type_id = 1 then
vl_salary_summ:= bc1_roznica_rec.sum_w_nds* vl_serial_value /100;
end if;

if vl_salary_rule_type_id = 2 then
vl_salary_summ:= bc1_roznica_rec.sum_nac* vl_serial_value /100;
end if;

if vl_salary_rule_type_id = 3 then
vl_salary_summ:= vl_serial_value *bc1_roznica_rec.outcome_count;
end if;
if vl_salary_rule_type_id = 4 then
vl_salary_summ:= vl_serial_value *bc1_roznica_rec.outcome_count;
end if;

if vl_salary_rule_paralel = 1 then
vl_bonus_zav := bc1_roznica_rec.bonus_zav;
else
vl_bonus_zav := 0;
end if;
bc_salary_rec.product_id := bc1_roznica_rec.product_id;
bc_salary_rec.sum_w_nds := bc1_roznica_rec.sum_w_nds;
bc_salary_rec.zp_fond := vl_salary_summ;
bc_salary_rec.zp_kass := vl_salary_summ*(1-vl_bonus_zav/100);
bc_salary_rec.zp_zav := vl_salary_summ*(vl_bonus_zav/100);
pipe row(bc_salary_rec);
end if;
end if;
end loop;
CLOSE c;
return;
end;

не понятно почему в 90% баз работает нормально а в 10% тормозит
...
Рейтинг: 0 / 0
09.04.2019, 22:38
    #39799051
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
ilyuha111Имеются 2 примерно одинаковые по объему базы oracle 11xe 64bit
есть пакет который выдает таблицу
select * from table(pk_salary.salary_view) order by 1
на одной базе выполняется за 1,23с на другой 135,3с куда копать не понятно планы выглядят одинаково

Description Object owner Object name Cost Cardinality Bytes
SELECT STATEMENT, GOAL = CHOOSE
SORT ORDER BY
COLLECTION ITERATOR PICKLER FETCH PK_SALARY SALARY_VIEW

покажите в каком направлении копать

накатывали этот запрос примерно на 200 баз в сети
где в 15 базах обнаружены тормоза
никакой закономерности обнаружить не удалось

Ключевое слово здесь "примерно".
Сравнение наборов данных, сбора статистики - на первом месте копания.
...
Рейтинг: 0 / 0
10.04.2019, 07:51
    #39799130
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
ilyuha111вот тексетЧудак, научись общаться в проф-форуме. Твой говно-текст никто даже смотреть не станет.
ilyuha111не понятно почему в 90% баз работает нормально а в 10% тормозитПотому что есть 10% людей, которые способны понять почему, а 90% даже пытаться объяснять бесполезно. Правило Парето.
...
Рейтинг: 0 / 0
10.04.2019, 10:18
    #39799189
ilyuha111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
Переформулирую
есть базы oracle 11xe 64bit и oracle 11xe 32bit операционистки от Winxp 32 до win10 64 примерно 200 баз
возраст с 01,05,2018 по сегодня (устанавливалось в течении полугода ) размер данных от 200М до 1000М
по неясным причинам в 20 базах запрос - select * from table(pk_salary.salary_view) order by 1 отрабатывает очень медленно (100-300 сек), в 180 базах 0,1-2 сек
пытались найти закономерности
проверяли:
операционистки
разрядность оракла 32-64
настройки памяти
содержимое зависимых от запроса таблиц
сбор статистики
количество строк в результате запроса от 1000 до 9000 в разных базах, нет закономерности
упрощали переписывали функцию
закономерностей не нашли

пытались :
сбор статистики не помогает
пересоздание зависимых таблиц не помогает
переустановка оракла помогает раз из 3х
замена компа помогает примерно 50/50
переписать запрос на SQL (без функции) помогает на 100%, но не учитывает сложную логику
создание временной таблицы (вставка из функции) работает, но её нужно часть обновлять (delete insrt примерно 3-5 минут и в это время запросы подтормаживают)
поднимали разные базы на дохлых компах (ATOM 1G оперативы hdd5200 ) все рано работает быстро примерно 5-10 сек


возможно мы не там ищем, такие запросы применять стали недавно так как раньше особой необходимости в них не было
...
Рейтинг: 0 / 0
10.04.2019, 10:37
    #39799196
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
ilyuha111переустановка оракла помогает раз из 3х
замена компа помогает примерно 50/50Надо было ещё форточки открыть/закрыть.
...
Рейтинг: 0 / 0
10.04.2019, 10:41
    #39799199
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
ilyuha111пытались :Статистически логично начать разбираться с большей группы, где по неясным причинам "0,1-2 сек".
...
Рейтинг: 0 / 0
10.04.2019, 10:47
    #39799204
ilyuha111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
-2-,

не вижу смысла
когда велась разработка то не сразу все заработало
на тестовых стендах довели до нужного уровня и в работу
...
Рейтинг: 0 / 0
10.04.2019, 14:46
    #39799391
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
ЕХИДСТВО_ОН

Запустить на проблемных базах в профайлере и посмотреть, где, что и почему тормозить не судьба? Переустанавливать Oracle и заменять компы проще?

ilyuha111....когда велась разработка то не сразу все заработало
на тестовых стендах довели....
ilyuha111переустановка оракла помогает раз из 3х
замена компа помогает примерно 50/50
Интересно, сколько раз пришлось переустанавливать Oracle и заменять комп на тестовых базах, что бы "довести до нужного уровня" ?

Еще десять тысяч вёдер воды, синьор, — и золотой ключик у нас в кармане! ( C )

ЕХИДСТВО_ОФФ
...
Рейтинг: 0 / 0
10.04.2019, 15:27
    #39799434
DВА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
ilyuha111Переформулирую
есть базы oracle 11xe 64bit и oracle 11xe 32bit операционистки от Winxp 32 до win10 64 примерно 200 баз
возраст с 01,05,2018 по сегодня (устанавливалось в течении полугода ) размер данных от 200М до 1000М
по неясным причинам в 20 базах запрос - select * from table(pk_salary.salary_view) order by 1 отрабатывает очень медленно (100-300 сек), в 180 базах 0,1-2 сек
пытались найти закономерности
проверяли:
операционистки
разрядность оракла 32-64
настройки памяти
содержимое зависимых от запроса таблиц
сбор статистики
количество строк в результате запроса от 1000 до 9000 в разных базах, нет закономерности
упрощали переписывали функцию
закономерностей не нашли

пытались :
сбор статистики не помогает
пересоздание зависимых таблиц не помогает
переустановка оракла помогает раз из 3х
замена компа помогает примерно 50/50
переписать запрос на SQL (без функции) помогает на 100%, но не учитывает сложную логику
создание временной таблицы (вставка из функции) работает, но её нужно часть обновлять (delete insrt примерно 3-5 минут и в это время запросы подтормаживают)
поднимали разные базы на дохлых компах (ATOM 1G оперативы hdd5200 ) все рано работает быстро примерно 5-10 сек


возможно мы не там ищем, такие запросы применять стали недавно так как раньше особой необходимости в них не было

фразу "план запроса" я так понимаю вы уже слышали? и даже писали
Осталось сравнить их не только по внешнему запросу, но и по запросам из пакетa
А как - гуглить по фразе trace in oracle
...
Рейтинг: 0 / 0
11.04.2019, 09:07
    #39799711
ilyuha111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
да советы помогли есть запрос внутри функции с разными планами
содержимое всех таблиц одинаковое
вопрос почему отличаются планы ?
возможно каким то образом план запроса из одной базы перемести в другую?
ну или что ту вообще можно сделать ?

запрос
SELECT SR.SALARY_RULE_ID,
SR.SALARY_HEAD_ID,
SR.SALARY_RULE_NAME,
SRT.SALARY_RULE_TYPE_NAME,
SR.SALARY_RULE_PRIORITY,
SR.SALARY_RULE_PARALEL,
SR.SALARY_RULE_TYPE_ID,
SRPRO.PRODUCT_VALUE
FROM T_SALARY_RULE SR,
T_SALARY_HEAD SH,
T_SALARY_RULE_TYPE SRT,
T_SALARY_RULE_PRODUCT SRPRO,
T_SALARY_RULE_PARTNER SRP
WHERE SRT.SALARY_RULE_TYPE_ID = SR.SALARY_RULE_TYPE_ID
AND SR.SALARY_HEAD_ID = SH.SALARY_HEAD_ID
AND SRT.SALARY_RULE_TYPE_ID = SR.SALARY_RULE_TYPE_ID
AND SRP.SALARY_RULE_ID = SR.SALARY_RULE_ID
AND SRPRO.SALARY_RULE_ID = SR.SALARY_RULE_ID
AND SRPRO.PRODUCT_ID = :B2
AND SRP.PARTNER_ID = :B1
AND SRP.IS_DEL_FLAG = 0
AND SRPRO.IS_DEL_FLAG = 0
AND SR.IS_DEL_FLAG = 0
AND SH.IS_DEL_FLAG = 0
AND SH.DOCUMENT_STATUS_ID = 290102
AND TRUNC (SYSDATE) BETWEEN SR.SALARY_HEAD_DATE_START
AND COALESCE (SR.SALARY_HEAD_DATE_END,
SH.SALARY_HEAD_DATE_END)

ORDER BY SR.SALARY_RULE_PRIORITY


план с тормозами
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Plan hash value: 1701074962
 
-----------------------------------------------------------------------------------------------------------------
| Id  | Operation                          | Name                       | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                   |                            |    43 | 19436 |     3  (67)| 00:00:01 |
|   1 |  SORT ORDER BY                     |                            |    43 | 19436 |     3  (67)| 00:00:01 |
|   2 |   NESTED LOOPS                     |                            |       |       |            |          |
|   3 |    NESTED LOOPS                    |                            |    43 | 19436 |     2  (50)| 00:00:01 |
|   4 |     NESTED LOOPS                   |                            |    43 | 16641 |     2  (50)| 00:00:01 |
|   5 |      NESTED LOOPS                  |                            |  2571 |   851K|     2  (50)| 00:00:01 |
|   6 |       MERGE JOIN CARTESIAN         |                            |   136K|    11M|     1   (0)| 00:00:01 |
|*  7 |        TABLE ACCESS BY INDEX ROWID | T_SALARY_RULE_PARTNER      |    69 |  2691 |     1   (0)| 00:00:01 |
|*  8 |         INDEX RANGE SCAN           | IX_SRPAP_IS_DEL_FLAG       |    35 |       |     1   (0)| 00:00:01 |
|   9 |        BUFFER SORT                 |                            |  1974 |   100K|     0   (0)| 00:00:01 |
|* 10 |         TABLE ACCESS BY INDEX ROWID| T_SALARY_RULE_PRODUCT      |  1974 |   100K|     0   (0)| 00:00:01 |
|* 11 |          INDEX RANGE SCAN          | IX_SRP_IS_DEL_FLAG         |   789 |       |     0   (0)| 00:00:01 |
|* 12 |       TABLE ACCESS BY INDEX ROWID  | T_SALARY_RULE              |     1 |   248 |     0   (0)| 00:00:01 |
|* 13 |        INDEX RANGE SCAN            | IX_SR_IS_DEL_FLAG          |     1 |       |     0   (0)| 00:00:01 |
|* 14 |      TABLE ACCESS BY INDEX ROWID   | T_SALARY_HEAD              |     1 |    48 |     0   (0)| 00:00:01 |
|* 15 |       INDEX RANGE SCAN             | IX_SALH_DOCUMENT_STATUS_ID |     1 |       |     0   (0)| 00:00:01 |
|* 16 |     INDEX UNIQUE SCAN              | PK_SALARY_RULE_TYPE        |     1 |       |     0   (0)| 00:00:01 |
|  17 |    TABLE ACCESS BY INDEX ROWID     | T_SALARY_RULE_TYPE         |     1 |    65 |     0   (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   7 - filter("SRP"."PARTNER_ID"=TO_NUMBER(:B1))
   8 - access("SRP"."IS_DEL_FLAG"=0)
  10 - filter("SRPRO"."PRODUCT_ID"=TO_NUMBER(:B2))
  11 - access("SRPRO"."IS_DEL_FLAG"=0)
  12 - filter("SR"."SALARY_HEAD_DATE_START"<=TRUNC(SYSDATE@!) AND 
              "SRP"."SALARY_RULE_ID"="SR"."SALARY_RULE_ID" AND "SRPRO"."SALARY_RULE_ID"="SR"."SALARY_RULE_ID")
  13 - access("SR"."IS_DEL_FLAG"=0)
  14 - filter("SH"."IS_DEL_FLAG"=0 AND "SR"."SALARY_HEAD_ID"="SH"."SALARY_HEAD_ID" AND 
              COALESCE("SR"."SALARY_HEAD_DATE_END","SH"."SALARY_HEAD_DATE_END")>=TRUNC(SYSDATE@!))
  15 - access("SH"."DOCUMENT_STATUS_ID"=290102)
  16 - access("SRT"."SALARY_RULE_TYPE_ID"="SR"."SALARY_RULE_TYPE_ID")
 
Note
-----
   - dynamic sampling used for this statement (level=2)


план без тормозов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Plan hash value: 1494712299
 
----------------------------------------------------------------------------------------------------------------
| Id  | Operation                         | Name                       | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                  |                            |     1 |   125 |    11  (10)| 00:00:01 |
|   1 |  SORT ORDER BY                    |                            |     1 |   125 |    11  (10)| 00:00:01 |
|   2 |   NESTED LOOPS                    |                            |     1 |   125 |    10   (0)| 00:00:01 |
|   3 |    NESTED LOOPS                   |                            |     1 |   112 |     9   (0)| 00:00:01 |
|   4 |     NESTED LOOPS                  |                            |     1 |    92 |     8   (0)| 00:00:01 |
|   5 |      MERGE JOIN CARTESIAN         |                            |     2 |    74 |     6   (0)| 00:00:01 |
|*  6 |       TABLE ACCESS BY INDEX ROWID | T_SALARY_HEAD              |     1 |    20 |     2   (0)| 00:00:01 |
|*  7 |        INDEX RANGE SCAN           | IX_SALH_DOCUMENT_STATUS_ID |     4 |       |     1   (0)| 00:00:01 |
|   8 |       BUFFER SORT                 |                            |     2 |    34 |     4   (0)| 00:00:01 |
|*  9 |        TABLE ACCESS BY INDEX ROWID| T_SALARY_RULE_PRODUCT      |     2 |    34 |     4   (0)| 00:00:01 |
|* 10 |         INDEX RANGE SCAN          | IX_SRP_PRODUCT_ID          |     2 |       |     2   (0)| 00:00:01 |
|* 11 |      TABLE ACCESS BY INDEX ROWID  | T_SALARY_RULE              |     1 |    55 |     1   (0)| 00:00:01 |
|* 12 |       INDEX UNIQUE SCAN           | PK_SALARY_RULE             |     1 |       |     0   (0)| 00:00:01 |
|  13 |     TABLE ACCESS BY INDEX ROWID   | T_SALARY_RULE_TYPE         |     1 |    20 |     1   (0)| 00:00:01 |
|* 14 |      INDEX UNIQUE SCAN            | PK_SALARY_RULE_TYPE        |     1 |       |     0   (0)| 00:00:01 |
|* 15 |    INDEX RANGE SCAN               | UX_SRPAP                   |     1 |    13 |     1   (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------------------
 
Predicate Information (identified by operation id):
---------------------------------------------------
 
   6 - filter("SH"."IS_DEL_FLAG"=0)
   7 - access("SH"."DOCUMENT_STATUS_ID"=290102)
   9 - filter("SRPRO"."IS_DEL_FLAG"=0)
  10 - access("SRPRO"."PRODUCT_ID"=TO_NUMBER(:B2))
  11 - filter("SR"."IS_DEL_FLAG"=0 AND "SR"."SALARY_HEAD_DATE_START"<=TRUNC(SYSDATE@!) AND 
              "SR"."SALARY_HEAD_ID"="SH"."SALARY_HEAD_ID" AND COALESCE("SR"."SALARY_HEAD_DATE_END","SH"."SALARY_HEAD_D
              ATE_END")>=TRUNC(SYSDATE@!))
  12 - access("SRPRO"."SALARY_RULE_ID"="SR"."SALARY_RULE_ID")
  14 - access("SRT"."SALARY_RULE_TYPE_ID"="SR"."SALARY_RULE_TYPE_ID")
  15 - access("SRP"."SALARY_RULE_ID"="SR"."SALARY_RULE_ID" AND "SRP"."IS_DEL_FLAG"=0 AND 
              "SRP"."PARTNER_ID"=TO_NUMBER(:B1))
       filter("SRP"."PARTNER_ID"=TO_NUMBER(:B1) AND "SRP"."IS_DEL_FLAG"=0)
...
Рейтинг: 0 / 0
11.04.2019, 09:22
    #39799718
ilyuha111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
все вопрос решиться
кому интересно

1 починили сбор статистики
план поменялся на нормально но запрос отрабатывал долго

2 alter system flush shared_pool
выполнили команду и все заработало
...
Рейтинг: 0 / 0
11.04.2019, 09:34
    #39799725
alex-ls
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
ilyuha111все вопрос решиться
кому интересно ...
Вы сами хоть какие-то выводы сделали для себя или нет?
даже тегом
Код: plsql
1.
2.
3.
begin
  null;
end;

пользоваться не научились!
...
Рейтинг: 0 / 0
11.04.2019, 09:37
    #39799727
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
табличные конвейерные функции тормоза на разный базах
alex-lsВы сами хоть какие-то выводы сделали для себя или нет?Некогда. Суперкомпьютер из 200 узелков простаивает же.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / табличные конвейерные функции тормоза на разный базах / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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