powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Низкая загрузка ЦП ораклом. не выше 25% всегда.
25 сообщений из 105, страница 3 из 5
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39466115
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!...а я теперь не вижу совсем явного криминала. основные индексы видно есть, IDX_EAM_PLANREPAIRM_DTRBEGIN явно FBI индекс с TRUNC

БессовкаХотелось бы сказать много и нецензурно, но так как этого делать нельзя- соответствующие термины Вы можете добавить сами ,во время чтения,согласно Вашему воображению


Вот зачем там индекс с Trunc ???
В условие where, что написано ???
Так и индекс такой должен быть, как минимум из ДВУХ полей. Два индекса по одному полю, это совсем НЕ ТОЖЕ САМОЕ, что индекс по двум полям.

IMHO & AFAIK

А вообще, конечно, что бы что-то советовать, нужно видеть систему и иметь доступ к экране и клавиатуре. Хотя бы по скайпу или team viewer'У.
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39466119
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!...не факт. там табличка 1.5 мб, 100% закеширована. обращаться по индексу к такой мелкой может быть просто дороже
По опыту из Oracle 8.1.5, даже на крохотных табличках (а не 1.5 mb) с парой полей и парой десятков (меньше сотни) записей, индекс творит чудеса ))))
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39466121
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там HASH JOIN быть не должно. Как факт не должно. Тупые Nested Loop'ы

Я бы, даже, раз есть проблема со скоростью, не остановился бы пока даже table access из плана не убрал бы. Таблички маленькие, запросы простые, проблемы со скоростью - все по индексам.
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39466132
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevТак и индекс такой должен быть, как минимум из ДВУХ полей. Два индекса по одному полю, это совсем НЕ ТОЖЕ САМОЕ, что индекс по двум полям.

я ничего не знаю о системе, может там мульоны таких вот функций, плодить индексы заточенные на две функции из миллиона тоже может быть не лучшее решение. ну и составной индекс по двум полям в лучшем случае лишь слегка ускорит какую-то часть, а тут явно провал в 2-3 порядка.
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39466139
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!я ничего не знаю о системе, может там мульоны таких вот функций, плодить индексы заточенные на две функции из миллиона тоже может быть не лучшее решение.

Полностью согласен
Поэтому я уже третье сообщение заканчиваю словами "нужно видеть систему"

Но кроме как плодить индексы под запросы - ничего не остается. Код системы не поменяешь. А пара лишних индексов, может и не есть хорошо, но при размере БД топик стартера, и не так уж плохо. IMHO

Yo.!...в лучшем случае лишь слегка ускорит какую-то часть...
СЛЕГКА ????

Если привести в разумный вид, а не этот ужас, который сейчас в плане, я думаю в 5-50 раз ускориться "легко"

Т.е. если сейчас "вот маленький запрос на 3 минуты" потребляет 25 % CPU, то будет 10-15 секунд при 10% CPU. Как-то так.

"Быстро" при таком дизайне системы - не будет. Но судя по приведенным планам, сделать более-менее терпимо - вполне.
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39466290
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lonely_myp,

Я так понял селекты переписать нельзя?
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39467108
lonely_myp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevCREATE INDEX EAM_PlanRepairMAP_z1 ON EAM_PlanRepairMAP ( idobject, trunc(dbegin) );
CREATE INDEX Eam_ShiftrepairMAP_z2 ON Eam_ShiftrepairMAP ( idresponsible, idplanrepair );
снизили время запроса с 3 минут до 2:22 =)

третий индекс не создался, CREATE INDEX Eam_Typerepair_z3 ON Eam_Typerepair ON (id); ORA-00906: missing left parenthesis
я попробовал CREATE INDEX Eam_Typerepairmap_z3 ON Eam_Typerepairmap (IDOBJECT);
но он уже есть ORA-01408: such column list already indexed

планы запросов, изменились, у GetManHour стоимость ЦПУ упала вдвое, а у GetWorks ЦПУ стоимость мало изменилась.
план GetManHour :
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39467110
lonely_myp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
план GetWorks:
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39467124
lonely_myp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaximaXXL,
переписать можно, доступ к конфигурации нам предоставлен, но на данный момент смысла в этом мало, т.к. я у нас самый умный оракловщик.

Leonid Kudryavtsev"нужно видеть систему"
я над этим думаю, по идее я могу выставить демо версию базы которую присылал разработчик, но там нет такого объёма данных чтобы ощутить адские тормоза и оценить принимаемые меры.
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39467132
lonely_myp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevНо кроме как плодить индексы под запросы - ничего не остается. Код системы не поменяешь.поменять можно, просто некому)))

я щас в процессе осознавания как пользоваться планом запроса, конечно это не единственный запрос который можно ускорить.
если я разберусь с планами и индексами уже что-то, тогда пробегусь по остальным часто используемым операциям в программе и хотябы слегка её ускорю.
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39467135
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lonely_mypснизили время запроса с 3 минут до 2:22 =)

ну это ожидаемо. range scan по двум индексам в лучшем случае в двое медленее, чем с одного составного, а это лишь часть запроса, который явно можно в 50 раз затюнить.
покажи план первого запроса, а не составных функций. там ответы. только найди как в текст этот план вытащить текст.
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39467147
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lonely_myp...планы запросов, изменились, у GetManHour стоимость ЦПУ упала вдвое...
Это все не то (((, там никакой порнографии с Hash join быть не должно, ну или я что-то не понимаю.

Скайп есть?
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39468869
lonely_myp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yo.!в текст этот план вытащить

Код: plsql
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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
SQL> delete from plan_table;
 
0 rows deleted
 
SQL> explain plan for
  2  
  2  select  *
  3  from (select a.idObject id
  4        ,a.nShiftNumber
  5        ,a.idDepartment
  6        ,b.sDepartmentCode sDep
  7        ,c.slname||nvl2(c.smidname||c.sfname,' ','')||substr(c.sfname,1,1)
  8         ||nvl2(c.sfname,'.','')||substr(c.smidname,1,1)||nvl2(c.smidname,'.','') sName
  9        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('01.05.2017','dd.mm.yyyy')) as "nManHour[1]"
 10        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('01.05.2017','dd.mm.yyyy')) as "sWorks[1]"
 11        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('02.05.2017','dd.mm.yyyy')) as "nManHour[2]"
 12        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('02.05.2017','dd.mm.yyyy')) as "sWorks[2]"
 13        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('03.05.2017','dd.mm.yyyy')) as "nManHour[3]"
 14        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('03.05.2017','dd.mm.yyyy')) as "sWorks[3]"
 15        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('04.05.2017','dd.mm.yyyy')) as "nManHour[4]"
 16        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('04.05.2017','dd.mm.yyyy')) as "sWorks[4]"
 17        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('05.05.2017','dd.mm.yyyy')) as "nManHour[5]"
 18        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('05.05.2017','dd.mm.yyyy')) as "sWorks[5]"
 19        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('06.05.2017','dd.mm.yyyy')) as "nManHour[6]"
 20        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('06.05.2017','dd.mm.yyyy')) as "sWorks[6]"
 21        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('07.05.2017','dd.mm.yyyy')) as "nManHour[7]"
 22        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('07.05.2017','dd.mm.yyyy')) as "sWorks[7]"
 23        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('08.05.2017','dd.mm.yyyy')) as "nManHour[8]"
 24        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('08.05.2017','dd.mm.yyyy')) as "sWorks[8]"
 25        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('09.05.2017','dd.mm.yyyy')) as "nManHour[9]"
 26        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('09.05.2017','dd.mm.yyyy')) as "sWorks[9]"
 27        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('10.05.2017','dd.mm.yyyy')) as "nManHour[10]"
 28        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('10.05.2017','dd.mm.yyyy')) as "sWorks[10]"
 29        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('11.05.2017','dd.mm.yyyy')) as "nManHour[11]"
 30        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('11.05.2017','dd.mm.yyyy')) as "sWorks[11]"
 31        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('12.05.2017','dd.mm.yyyy')) as "nManHour[12]"
 32        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('12.05.2017','dd.mm.yyyy')) as "sWorks[12]"
 33        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('13.05.2017','dd.mm.yyyy')) as "nManHour[13]"
 34        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('13.05.2017','dd.mm.yyyy')) as "sWorks[13]"
 35        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('14.05.2017','dd.mm.yyyy')) as "nManHour[14]"
 36        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('14.05.2017','dd.mm.yyyy')) as "sWorks[14]"
 37        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('15.05.2017','dd.mm.yyyy')) as "nManHour[15]"
 38        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('15.05.2017','dd.mm.yyyy')) as "sWorks[15]"
 39        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('16.05.2017','dd.mm.yyyy')) as "nManHour[16]"
 40        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('16.05.2017','dd.mm.yyyy')) as "sWorks[16]"
 41        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('17.05.2017','dd.mm.yyyy')) as "nManHour[17]"
 42        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('17.05.2017','dd.mm.yyyy')) as "sWorks[17]"
 43        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('18.05.2017','dd.mm.yyyy')) as "nManHour[18]"
 44        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('18.05.2017','dd.mm.yyyy')) as "sWorks[18]"
 45        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('19.05.2017','dd.mm.yyyy')) as "nManHour[19]"
 46        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('19.05.2017','dd.mm.yyyy')) as "sWorks[19]"
 47        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('20.05.2017','dd.mm.yyyy')) as "nManHour[20]"
 48        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('20.05.2017','dd.mm.yyyy')) as "sWorks[20]"
 49        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('21.05.2017','dd.mm.yyyy')) as "nManHour[21]"
 50        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('21.05.2017','dd.mm.yyyy')) as "sWorks[21]"
 51        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('22.05.2017','dd.mm.yyyy')) as "nManHour[22]"
 52        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('22.05.2017','dd.mm.yyyy')) as "sWorks[22]"
 53        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('23.05.2017','dd.mm.yyyy')) as "nManHour[23]"
 54        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('23.05.2017','dd.mm.yyyy')) as "sWorks[23]"
 55        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('24.05.2017','dd.mm.yyyy')) as "nManHour[24]"
 56        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('24.05.2017','dd.mm.yyyy')) as "sWorks[24]"
 57        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('25.05.2017','dd.mm.yyyy')) as "nManHour[25]"
 58        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('25.05.2017','dd.mm.yyyy')) as "sWorks[25]"
 59        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('26.05.2017','dd.mm.yyyy')) as "nManHour[26]"
 60        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('26.05.2017','dd.mm.yyyy')) as "sWorks[26]"
 61        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('27.05.2017','dd.mm.yyyy')) as "nManHour[27]"
 62        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('27.05.2017','dd.mm.yyyy')) as "sWorks[27]"
 63        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('28.05.2017','dd.mm.yyyy')) as "nManHour[28]"
 64        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('28.05.2017','dd.mm.yyyy')) as "sWorks[28]"
 65        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('29.05.2017','dd.mm.yyyy')) as "nManHour[29]"
 66        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('29.05.2017','dd.mm.yyyy')) as "sWorks[29]"
 67        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('30.05.2017','dd.mm.yyyy')) as "nManHour[30]"
 68        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('30.05.2017','dd.mm.yyyy')) as "sWorks[30]"
 69        ,EAM_SetResponsible.GetManHour(a.idObject,to_date('31.05.2017','dd.mm.yyyy')) as "nManHour[31]"
 70        ,EAM_SetResponsible.GetWorks(a.idObject,to_date('31.05.2017','dd.mm.yyyy')) as "sWorks[31]"
 71  from EAM_ShiftMAP a
 72      ,Bs_DepartmentMAP b
 73      ,BS_PersonMAP c
 74  where a.iddepartment = b.idObject(+)
 75    and a.idPerson = c.idObject(+)) a
 76  where (1=1);
 
Explained
 
SQL> select * from table(dbms_xplan.display);
 
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3619574096
--------------------------------------------------------------------------------
| Id  | Operation           | Name             | Rows  | Bytes | Cost (%CPU)| Ti
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |                  |   102 |  8466 |    12   (9)| 00
|*  1 |  HASH JOIN OUTER    |                  |   102 |  8466 |    12   (9)| 00
|*  2 |   HASH JOIN OUTER   |                  |   102 |  4998 |     7  (15)| 00
|   3 |    TABLE ACCESS FULL| EAM_SHIFTMAP     |   102 |  2856 |     3   (0)| 00
|   4 |    TABLE ACCESS FULL| BS_DEPARTMENTMAP |   118 |  2478 |     3   (0)| 00
|   5 |   TABLE ACCESS FULL | BS_PERSONMAP     |   705 | 23970 |     5   (0)| 00
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - access("A"."IDPERSON"="C"."IDOBJECT"(+))
   2 - access("A"."IDDEPARTMENT"="B"."IDOBJECT"(+))
 
18 rows selected

...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39469012
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lonely_mypMaximaXXL,
переписать можно, доступ к конфигурации нам предоставлен, но на данный момент смысла в этом мало, т.к. я у нас самый умный оракловщик.


Давно я такой ... не страдал
А попробуй вот так:
Код: plsql
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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
         select a.idObject id
      ,a.nShiftNumber
      ,a.idDepartment
      ,b.sDepartmentCode sDep
      ,c.slname||nvl2(c.smidname||c.sfname,' ','')||substr(c.sfname,1,1)
       ||nvl2(c.sfname,'.','')||substr(c.smidname,1,1)||nvl2(c.smidname,'.','') sName
      ,k.s1 as "nManHour[1]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('01.05.2017','dd.mm.yyyy')) as "sWorks[1]"
      ,k.s2 as "nManHour[2]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('02.05.2017','dd.mm.yyyy')) as "sWorks[2]"
      ,k.s3 as "nManHour[3]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('03.05.2017','dd.mm.yyyy')) as "sWorks[3]"
      ,k.s4 as "nManHour[4]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('04.05.2017','dd.mm.yyyy')) as "sWorks[4]"
      ,k.s5 as "nManHour[5]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('05.05.2017','dd.mm.yyyy')) as "sWorks[5]"
      ,k.s6 as "nManHour[6]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('06.05.2017','dd.mm.yyyy')) as "sWorks[6]"
      ,k.s7 as "nManHour[7]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('07.05.2017','dd.mm.yyyy')) as "sWorks[7]"
      ,k.s8 as "nManHour[8]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('08.05.2017','dd.mm.yyyy')) as "sWorks[8]"
      ,k.s9 as "nManHour[9]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('09.05.2017','dd.mm.yyyy')) as "sWorks[9]"
      ,k.s10 as "nManHour[10]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('10.05.2017','dd.mm.yyyy')) as "sWorks[10]"
      ,k.s11 as "nManHour[11]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('11.05.2017','dd.mm.yyyy')) as "sWorks[11]"
      ,k.s12 as "nManHour[12]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('12.05.2017','dd.mm.yyyy')) as "sWorks[12]"
      ,k.s13 as "nManHour[13]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('13.05.2017','dd.mm.yyyy')) as "sWorks[13]"
      ,k.s14 as "nManHour[14]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('14.05.2017','dd.mm.yyyy')) as "sWorks[14]"
      ,k.s15 as "nManHour[15]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('15.05.2017','dd.mm.yyyy')) as "sWorks[15]"
      ,k.s16 as "nManHour[16]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('16.05.2017','dd.mm.yyyy')) as "sWorks[16]"
      ,k.s17 as "nManHour[17]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('17.05.2017','dd.mm.yyyy')) as "sWorks[17]"
      ,k.s18 as "nManHour[18]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('18.05.2017','dd.mm.yyyy')) as "sWorks[18]"
      ,k.s19 as "nManHour[19]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('19.05.2017','dd.mm.yyyy')) as "sWorks[19]"
      ,k.s20 as "nManHour[20]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('20.05.2017','dd.mm.yyyy')) as "sWorks[20]"
      ,k.s21 as "nManHour[21]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('21.05.2017','dd.mm.yyyy')) as "sWorks[21]"
      ,k.s22 as "nManHour[22]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('22.05.2017','dd.mm.yyyy')) as "sWorks[22]"
      ,k.s23 as "nManHour[23]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('23.05.2017','dd.mm.yyyy')) as "sWorks[23]"
      ,k.s24 as "nManHour[24]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('24.05.2017','dd.mm.yyyy')) as "sWorks[24]"
      ,k.s25 as "nManHour[25]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('25.05.2017','dd.mm.yyyy')) as "sWorks[25]"
      ,k.s26 as "nManHour[26]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('26.05.2017','dd.mm.yyyy')) as "sWorks[26]"
      ,k.s27 as "nManHour[27]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('27.05.2017','dd.mm.yyyy')) as "sWorks[27]"
      ,k.s28 as "nManHour[28]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('28.05.2017','dd.mm.yyyy')) as "sWorks[28]"
      ,k.s29 as "nManHour[29]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('29.05.2017','dd.mm.yyyy')) as "sWorks[29]"
      ,k.s30 as "nManHour[30]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('30.05.2017','dd.mm.yyyy')) as "sWorks[30]"
      ,k.s31 as "nManHour[31]"
      ,EAM_SetResponsible.GetWorks(a.idObject,to_date('31.05.2017','dd.mm.yyyy')) as "sWorks[31]"
from EAM_ShiftMAP a
    left join Bs_DepartmentMAP b on (a.iddepartment = b.idObject)
    left join BS_PersonMAP c on (a.idPerson = c.idObject)
    left join (    select b.idresponsible, 
sum(decode(to_char(a.dbegin,'dd'),'01', a.nmanhour)) s1,
sum(decode(to_char(a.dbegin,'dd'),'02', a.nmanhour)) s2,
sum(decode(to_char(a.dbegin,'dd'),'03', a.nmanhour)) s3,
sum(decode(to_char(a.dbegin,'dd'),'04', a.nmanhour)) s4,
sum(decode(to_char(a.dbegin,'dd'),'05', a.nmanhour)) s5,
sum(decode(to_char(a.dbegin,'dd'),'06', a.nmanhour)) s6,
sum(decode(to_char(a.dbegin,'dd'),'07', a.nmanhour)) s7,
sum(decode(to_char(a.dbegin,'dd'),'08', a.nmanhour)) s8,
sum(decode(to_char(a.dbegin,'dd'),'09', a.nmanhour)) s9,
sum(decode(to_char(a.dbegin,'dd'),'10', a.nmanhour)) s10,
sum(decode(to_char(a.dbegin,'dd'),'11', a.nmanhour)) s11,
sum(decode(to_char(a.dbegin,'dd'),'12', a.nmanhour)) s12,
sum(decode(to_char(a.dbegin,'dd'),'13', a.nmanhour)) s13,
sum(decode(to_char(a.dbegin,'dd'),'14', a.nmanhour)) s14,
sum(decode(to_char(a.dbegin,'dd'),'15', a.nmanhour)) s15,
sum(decode(to_char(a.dbegin,'dd'),'16', a.nmanhour)) s16,
sum(decode(to_char(a.dbegin,'dd'),'17', a.nmanhour)) s17,
sum(decode(to_char(a.dbegin,'dd'),'18', a.nmanhour)) s18,
sum(decode(to_char(a.dbegin,'dd'),'19', a.nmanhour)) s19,
sum(decode(to_char(a.dbegin,'dd'),'20', a.nmanhour)) s20,
sum(decode(to_char(a.dbegin,'dd'),'21', a.nmanhour)) s21,
sum(decode(to_char(a.dbegin,'dd'),'22', a.nmanhour)) s22,
sum(decode(to_char(a.dbegin,'dd'),'23', a.nmanhour)) s23,
sum(decode(to_char(a.dbegin,'dd'),'24', a.nmanhour)) s24,
sum(decode(to_char(a.dbegin,'dd'),'25', a.nmanhour)) s25,
sum(decode(to_char(a.dbegin,'dd'),'26', a.nmanhour)) s26,
sum(decode(to_char(a.dbegin,'dd'),'27', a.nmanhour)) s27,
sum(decode(to_char(a.dbegin,'dd'),'28', a.nmanhour)) s28,
sum(decode(to_char(a.dbegin,'dd'),'29', a.nmanhour)) s29,
sum(decode(to_char(a.dbegin,'dd'),'30', a.nmanhour)) s30,
sum(decode(to_char(a.dbegin,'dd'),'31', a.nmanhour)) s31
      from EAM_PlanRepairMAP a, (select distinct idresponsible, idplanrepair from Eam_ShiftrepairMAP) b
     where a.idobject = b.idplanrepair
       and a.dbegin between to_date('01.05.2017','dd.mm.yyyy') and to_date('31.05.2017 23:59:59','dd.mm.yyyy HH24:mi:ss')
group by b.idresponsible) k on (a.idObject = k.idresponsible)
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39469026
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как Вы братцы круто взялись. Я бы сначала с маленьких, с простых запросов начал )))
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39469043
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Да какая крутость, для каждой строчки запускать 31 запрос (31 проход) да ще и поле транкейтить (а там может быть мульен записей) вместо разброса с и по. Индексы по транкейченому полю как по мне - лишнее.

Как по мне, сразу переписать в 1 запрос тут делов на 30 мин.
Только бы понять на сколько ускорился/замедлился. Без базы, в оффлайне (вспоминаю институт и програмки на бумажке) ускорять что-то - сущий ад
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39469099
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaximaXXLКак по мне, сразу переписать в 1 запрос тут делов на 30 мин.

у меня есть смутное подозрение, что данный запрос авто-генеренный

MaximaXXLБез базы, в оффлайне (вспоминаю институт и програмки на бумажке) ускорять что-то - сущий ад

аналогичного мнения
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39469151
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lonely_myp,

Вот это должно работать ...

Код: plsql
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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
         select a.idObject id
      ,a.nShiftNumber
      ,a.idDepartment
      ,b.sDepartmentCode sDep
      ,c.slname||nvl2(c.smidname||c.sfname,' ','')||substr(c.sfname,1,1)
       ||nvl2(c.sfname,'.','')||substr(c.smidname,1,1)||nvl2(c.smidname,'.','') sName
      ,k.s1 as "nManHour[1]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c1,1,null,k.c1)) || k.sCode,'-')),'-','') as "sWorks[1]"
      ,k.s2 as "nManHour[2]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c2,1,null,k.c2)) || k.sCode,'-')),'-','') as "sWorks[2]"
      ,k.s3 as "nManHour[3]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c3,1,null,k.c3)) || k.sCode,'-')),'-','') as "sWorks[3]"
      ,k.s4 as "nManHour[4]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c4,1,null,k.c4)) || k.sCode,'-')),'-','') as "sWorks[4]"
      ,k.s5 as "nManHour[5]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c5,1,null,k.c5)) || k.sCode,'-')),'-','') as "sWorks[5]"
      ,k.s6 as "nManHour[6]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c6,1,null,k.c6)) || k.sCode,'-')),'-','') as "sWorks[6]"
      ,k.s7 as "nManHour[7]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c7,1,null,k.c7)) || k.sCode,'-')),'-','') as "sWorks[7]"
      ,k.s8 as "nManHour[8]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c8,1,null,k.c8)) || k.sCode,'-')),'-','') as "sWorks[8]"
      ,k.s9 as "nManHour[9]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c9,1,null,k.c9)) || k.sCode,'-')),'-','') as "sWorks[9]"
      ,k.s10 as "nManHour[10]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c10,1,null,k.c10)) || k.sCode,'-')),'-','') as "sWorks[10]"
      ,k.s11 as "nManHour[11]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c11,1,null,k.c11)) || k.sCode,'-')),'-','') as "sWorks[11]"
      ,k.s12 as "nManHour[12]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c12,1,null,k.c12)) || k.sCode,'-')),'-','') as "sWorks[12]"
      ,k.s13 as "nManHour[13]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c13,1,null,k.c13)) || k.sCode,'-')),'-','') as "sWorks[13]"
      ,k.s14 as "nManHour[14]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c14,1,null,k.c14)) || k.sCode,'-')),'-','') as "sWorks[14]"
      ,k.s15 as "nManHour[15]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c15,1,null,k.c15)) || k.sCode,'-')),'-','') as "sWorks[15]"
      ,k.s16 as "nManHour[16]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c16,1,null,k.c16)) || k.sCode,'-')),'-','') as "sWorks[16]"
      ,k.s17 as "nManHour[17]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c17,1,null,k.c17)) || k.sCode,'-')),'-','') as "sWorks[17]"
      ,k.s18 as "nManHour[18]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c18,1,null,k.c18)) || k.sCode,'-')),'-','') as "sWorks[18]"
      ,k.s19 as "nManHour[19]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c19,1,null,k.c19)) || k.sCode,'-')),'-','') as "sWorks[19]"
      ,k.s20 as "nManHour[20]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c20,1,null,k.c20)) || k.sCode,'-')),'-','') as "sWorks[20]"
      ,k.s21 as "nManHour[21]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c21,1,null,k.c21)) || k.sCode,'-')),'-','') as "sWorks[21]"
      ,k.s22 as "nManHour[22]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c22,1,null,k.c22)) || k.sCode,'-')),'-','') as "sWorks[22]"
      ,k.s23 as "nManHour[23]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c23,1,null,k.c23)) || k.sCode,'-')),'-','') as "sWorks[23]"
      ,k.s24 as "nManHour[24]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c24,1,null,k.c24)) || k.sCode,'-')),'-','') as "sWorks[24]"
      ,k.s25 as "nManHour[25]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c25,1,null,k.c25)) || k.sCode,'-')),'-','') as "sWorks[25]"
      ,k.s26 as "nManHour[26]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c26,1,null,k.c26)) || k.sCode,'-')),'-','') as "sWorks[26]"
      ,k.s27 as "nManHour[27]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c27,1,null,k.c27)) || k.sCode,'-')),'-','') as "sWorks[27]"
      ,k.s28 as "nManHour[28]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c28,1,null,k.c28)) || k.sCode,'-')),'-','') as "sWorks[28]"
      ,k.s29 as "nManHour[29]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c29,1,null,k.c29)) || k.sCode,'-')),'-','') as "sWorks[29]"
      ,k.s30 as "nManHour[30]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c30,1,null,k.c30)) || k.sCode,'-')),'-','') as "sWorks[30]"
      ,k.s31 as "nManHour[31]"
      ,replace(straggrd(straggrdargs(to_char(decode(k.c31,1,null,k.c31)) || k.sCode,'-')),'-','') as "sWorks[31]"
from EAM_ShiftMAP a
    left join Bs_DepartmentMAP b on (a.iddepartment = b.idObject)
    left join BS_PersonMAP c on (a.idPerson = c.idObject)
    left join (    select b.idresponsible, (select t.sCode from Eam_Typerepair t where a.idtyperepair = t.id) sCode,
sum(decode(to_char(a.dbegin,'dd'),'01', a.nmanhour)) s1,  count(decode(to_char(a.dbegin,'dd'),'01', 1)) c1,  
sum(decode(to_char(a.dbegin,'dd'),'02', a.nmanhour)) s2,  count(decode(to_char(a.dbegin,'dd'),'02', 1)) c2,  
sum(decode(to_char(a.dbegin,'dd'),'03', a.nmanhour)) s3,  count(decode(to_char(a.dbegin,'dd'),'03', 1)) c3,  
sum(decode(to_char(a.dbegin,'dd'),'04', a.nmanhour)) s4,  count(decode(to_char(a.dbegin,'dd'),'04', 1)) c4,  
sum(decode(to_char(a.dbegin,'dd'),'05', a.nmanhour)) s5,  count(decode(to_char(a.dbegin,'dd'),'05', 1)) c5,  
sum(decode(to_char(a.dbegin,'dd'),'06', a.nmanhour)) s6,  count(decode(to_char(a.dbegin,'dd'),'06', 1)) c6,  
sum(decode(to_char(a.dbegin,'dd'),'07', a.nmanhour)) s7,  count(decode(to_char(a.dbegin,'dd'),'07', 1)) c7,  
sum(decode(to_char(a.dbegin,'dd'),'08', a.nmanhour)) s8,  count(decode(to_char(a.dbegin,'dd'),'08', 1)) c8,  
sum(decode(to_char(a.dbegin,'dd'),'09', a.nmanhour)) s9,  count(decode(to_char(a.dbegin,'dd'),'09', 1)) c9,  
sum(decode(to_char(a.dbegin,'dd'),'10', a.nmanhour)) s10, count(decode(to_char(a.dbegin,'dd'),'10', 1)) c10, 
sum(decode(to_char(a.dbegin,'dd'),'11', a.nmanhour)) s11, count(decode(to_char(a.dbegin,'dd'),'11', 1)) c11, 
sum(decode(to_char(a.dbegin,'dd'),'12', a.nmanhour)) s12, count(decode(to_char(a.dbegin,'dd'),'12', 1)) c12, 
sum(decode(to_char(a.dbegin,'dd'),'13', a.nmanhour)) s13, count(decode(to_char(a.dbegin,'dd'),'13', 1)) c13, 
sum(decode(to_char(a.dbegin,'dd'),'14', a.nmanhour)) s14, count(decode(to_char(a.dbegin,'dd'),'14', 1)) c14, 
sum(decode(to_char(a.dbegin,'dd'),'15', a.nmanhour)) s15, count(decode(to_char(a.dbegin,'dd'),'15', 1)) c15, 
sum(decode(to_char(a.dbegin,'dd'),'16', a.nmanhour)) s16, count(decode(to_char(a.dbegin,'dd'),'16', 1)) c16, 
sum(decode(to_char(a.dbegin,'dd'),'17', a.nmanhour)) s17, count(decode(to_char(a.dbegin,'dd'),'17', 1)) c17, 
sum(decode(to_char(a.dbegin,'dd'),'18', a.nmanhour)) s18, count(decode(to_char(a.dbegin,'dd'),'18', 1)) c18, 
sum(decode(to_char(a.dbegin,'dd'),'19', a.nmanhour)) s19, count(decode(to_char(a.dbegin,'dd'),'19', 1)) c19, 
sum(decode(to_char(a.dbegin,'dd'),'20', a.nmanhour)) s20, count(decode(to_char(a.dbegin,'dd'),'20', 1)) c20, 
sum(decode(to_char(a.dbegin,'dd'),'21', a.nmanhour)) s21, count(decode(to_char(a.dbegin,'dd'),'21', 1)) c21, 
sum(decode(to_char(a.dbegin,'dd'),'22', a.nmanhour)) s22, count(decode(to_char(a.dbegin,'dd'),'22', 1)) c22, 
sum(decode(to_char(a.dbegin,'dd'),'23', a.nmanhour)) s23, count(decode(to_char(a.dbegin,'dd'),'23', 1)) c23, 
sum(decode(to_char(a.dbegin,'dd'),'24', a.nmanhour)) s24, count(decode(to_char(a.dbegin,'dd'),'24', 1)) c24, 
sum(decode(to_char(a.dbegin,'dd'),'25', a.nmanhour)) s25, count(decode(to_char(a.dbegin,'dd'),'25', 1)) c25, 
sum(decode(to_char(a.dbegin,'dd'),'26', a.nmanhour)) s26, count(decode(to_char(a.dbegin,'dd'),'26', 1)) c26, 
sum(decode(to_char(a.dbegin,'dd'),'27', a.nmanhour)) s27, count(decode(to_char(a.dbegin,'dd'),'27', 1)) c27, 
sum(decode(to_char(a.dbegin,'dd'),'28', a.nmanhour)) s28, count(decode(to_char(a.dbegin,'dd'),'28', 1)) c28, 
sum(decode(to_char(a.dbegin,'dd'),'29', a.nmanhour)) s29, count(decode(to_char(a.dbegin,'dd'),'29', 1)) c29, 
sum(decode(to_char(a.dbegin,'dd'),'30', a.nmanhour)) s30, count(decode(to_char(a.dbegin,'dd'),'30', 1)) c30, 
sum(decode(to_char(a.dbegin,'dd'),'31', a.nmanhour)) s31, count(decode(to_char(a.dbegin,'dd'),'31', 1)) c31  
      from EAM_PlanRepairMAP a, (select distinct idresponsible, idplanrepair from Eam_ShiftrepairMAP) b
     where a.idobject = b.idplanrepair
       and a.dbegin between to_date('01.05.2017','dd.mm.yyyy') and to_date('31.05.2017 23:59:59','dd.mm.yyyy HH24:mi:ss')
group by b.idresponsible, a.idtyperepair) k on (a.idObject = k.idresponsible)



хотя я и не понимаю что это такое
Код: plsql
1.
replace(straggrd(straggrdargs(to_char(decode(k.c24,1,null,k.c24)) || k.sCode,'-')),'-','')


и зачем передавать знак "-" а потом его реплейсить
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39469412
lonely_myp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev данный запрос авто-генеренныйда, собирается на нужное число дней.

более общий вид

Код: plsql
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.
 function GetGST(dpBegin in date, dpEnd in date) return clob as
    svText clob;
  begin
    if dpEnd - dpBegin > 59 then
      BTK_ErrorAPI.Generate('BTK.eCustomError',
                            'Задан слишком большой временной диапазон. 60 дней - максимально возможный');
    end if;
  
    for x in (select to_char(num) id,
                     'to_date(''' ||
                     to_char(dpBegin + (num - 1), 'dd.mm.yyyy') ||
                     ''',''dd.mm.yyyy'')' sDate
                from BTK_SolidSeq b
               where b.num <= (dpEnd - dpBegin) + 1
               order by num) loop
      svText := svText ||
                '      ,EAM_SetResponsible.GetManHour(a.idObject,' ||
                x.sdate || ') as "nManHour[' || x.id || ']"
      , EAM_SetResponsible.GetWorks(a.idObject,' || x.sdate ||
                ') as "sWorks[' || x.id || ']"' || chr(13);
    end loop;
    svText := 'select a.idObject id
      ,a.nShiftNumber
      ,a.idDepartment
      ,b.sDepartmentCode sDep
      ,c.slname||nvl2(c.smidname||c.sfname,'' '','''')||substr(c.sfname,1,1)
       ||nvl2(c.sfname,''.'','''')||substr(c.smidname,1,1)||nvl2(c.smidname,''.'','''') sName
' || svText || '
      ,EAM_SetResponsible.GetAllManHour(a.idObject,:filter$Flt_dBegin,:filter$Flt_dEnd) as nAllManHour
      ,EAM_SetResponsible.GetAllQty(a.idObject,:filter$Flt_dBegin,:filter$Flt_dEnd) as nAllQty
from EAM_ShiftMAP a
    ,Bs_DepartmentMAP b
    ,BS_PersonMAP c
where a.iddepartment = b.idObject(+)
  and a.idPerson = c.idObject(+)';
    return svText;
  end;

...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39469454
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Взять и переписать.

Система не так уж и плоха, как кажется на первый взгляд. Функции, генерация кода тоже на сторед-процедурах... Т.ч., в принципе, все понятно. Взять и переписать. Те куски, которые работают анормально большое кол-во времени.

Малой кровью, ф-ции GetAllManHour, GetAllQty. Делов на пару часов, если иметь доступ хотя бы к экрану компьютера (скайп, TeamViewer). Будет быстрее раз в 5-50

Чуть побольше, подумать и переделать всю эту сборки, как предлагает MaximaXXL. Отказаться от ф-ций и все данные доставать одним запросом (или With...select... ). Это уже посложнее.
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39470170
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lonely_myp,

хм ... я уже и забыл как план с UDF выглядит, думал на картинках план обрезан...
не думаю что переписывать чужой sql хорошая идея, по хорошему надо докопаться чего сбивает оптимизатор. все таблички выглядят крошечными, может это как-то сбивает его с толку.

для начала я бы просто посмотрел с хинтом /*+ RULE */ , он должен nested loop по индексам врубить
Код: sql
1.
2.
3.
select /*+ RULE */  *
from (select a.idObject id
...


если хинт RULE даст ожидаемые 10-30 сек, попробовал бы участвующие таблицы ALTER TABLE ... CACHE;
в теории это может от фулскана избавить.

плюс пересобрал бы системную статистику, может у оптимизатора неверные данные о скорости дисков/процессора

exec dbms_stats.gather_system_stats(gathering_mode=>'start') ;
тут часик нагрузки ...
exec dbms_stats.gather_system_stats(gathering_mode=>'stop') ;
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39470231
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!...по хорошему надо докопаться чего сбивает оптимизатор...
IMHO бесконечно вложенные один в другой подзапросы

что бы добавить hint, я так подозреваю, на SE все равно придется код запроса править

У авторов запросов очень не традиционное мышление. Очень изощренный способ с помощью вложенного подзапроса, group by и join изобразить in (select...)

IMHO
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39470307
MaximaXXL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lonely_mypLeonid Kudryavtsev данный запрос авто-генеренныйда, собирается на нужное число дней.

более общий вид



Вы бы не могли написать подходит ли Вам скорость/загрузка для предложенного мной селекта из 20551953 сообщения, сделать его автогенерируемым, не составит большого труда
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39470309
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsevчто бы добавить hint, я так подозреваю, на SE все равно придется код запроса править

не, хинт зашивать в код я не предлагаю. хинт чисто посмотреть даст ли nested loop ожидаемые 10-30 секунд.
...
Рейтинг: 0 / 0
Низкая загрузка ЦП ораклом. не выше 25% всегда.
    #39470363
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!если хинт RULE даст ожидаемые 10-30 сек
Yo.!не, хинт зашивать в код я не предлагаю. хинт чисто посмотреть даст ли nested loop ожидаемые 10-30 секунд.
Ну RULE и nested loop как бы вещи достаточно не связанные. Вангую, что при RULE там тоже NL не будет

тогда надо ORDERED и USE_NL ==> но тогда как минимум нужно подзапросы местами переставлять ==> тогда уж посмотреть, какой будет план и скорость с нормальными запросами с in и exists ==> тогда уж посмотреть и попытаться понять, что за информация в табличках, что лучше in или exists исходя из логики

был бы доступ к экрану или, на худой конец, skype - делов на полчаса (или несколько часов). Но через форум... слишком много надо наводящих вопросов для простейшего запроса из 2-х табличек.
...
Рейтинг: 0 / 0
25 сообщений из 105, страница 3 из 5
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Низкая загрузка ЦП ораклом. не выше 25% всегда.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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