|
|
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Подскажите пожалуйста, где может быть ошибка ... Есть вот такой запрос Код: 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. Выполняется отлично, быстро и надежно. 8-10 сек. Но если сделать 2 изменения запрос виснет. 1. Если убрать все из результирующих полей кроме i.invoice_id - запрос умирает. После 10 мин выполнения я его обрываю. 2. Если добавить в index в таблице invoice_content еще поля для индексирования (сейчас там только invoice_id, если добавить еще id, purchase_id, service_row_id) - результат тот же самый, запрос зависает. Подскажите почему так происходит? Что можно изменить? Возможные причины, спасибо. ------------------------------------------------------------ Veni. Vidi. Vici. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 15:47 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
Грунов, explain plan for ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 15:51 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
План получается такой вот ... Description Object owner Object name Cost Cardinality Bytes Access predicatesSELECT STATEMENT GOAL = ALL_ROWS 11845 1 123 HASH JOIN ANTI NA 11845 1 123 I."INVOICE_ID"="INVOICE_ID" NESTED LOOPS NESTED LOOPS 3191 1 120 HASH JOIN 3190 1 100 S."STORAGE_ID"="SO"."STORAGE_ID" AND "S"."PURCHASE_ROW_ID"="SOC"."PURCHASE_ROW_ID" NESTED LOOPS NESTED LOOPS 3053 1 87 NESTED LOOPS 3052 1 79 NESTED LOOPS 3051 1 71 NESTED LOOPS 3051 67 NESTED LOOPS 1493 1 52 HASH JOIN 1493 2333 102652 POT."ORDER_ID"="IT"."PURCHASE_ID" AND "PG"."GRADE_ID"="IT"."GRADE_ID" HASH JOIN 83 4741 109043 P."PROD_ID"="POT"."PROD_ID" HASH JOIN 15 1180 12980 PG."GRADE_ID"="P"."PROD_GRADE" INDEX FULL SCAN SETTING PK_GRADE 1 98 392 TABLE ACCESS FULL SETTING PROD 13 1244 8708 TABLE ACCESS FULL STORE PURCHASE_ORDER_TRN 68 4958 59496 TABLE ACCESS FULL FINANCE INVOICE_CONTENT 1407 225352 4732392 INDEX UNIQUE SCAN STORE PK_SERVICE_CONTENT 0 1 8 SOC."SERVICE_ROW_ID"="IT"."SERVICE_ROW_ID" AND "POT"."ID"="SOC"."PURCHASE_ROW_ID" VIEW PUSHED PREDICATE FINANCE 1558 1 15 SORT GROUP BY 1558 1 17 VIEW FINANCE 1558 1 17 SORT UNIQUE 1558 1 98 HASH JOIN 1557 1 98 S."STORAGE_ID"="SO"."STORAGE_ID" AND "S"."PURCHASE_ROW_ID"="SOC"."PURCHASE_ROW_ID" NESTED LOOPS NESTED LOOPS 1419 1 85 NESTED LOOPS 1418 1 77 NESTED LOOPS 1417 1 69 NESTED LOOPS 1416 1 61 NESTED LOOPS 1414 1 54 HASH JOIN 1413 1 50 SOC."SERVICE_ROW_ID"="IT"."SERVICE_ROW_ID" AND "POT"."ORDER_ID"="IT"."PURCHASE_ID" NESTED LOOPS NESTED LOOPS 5 2 58 TABLE ACCESS BY INDEX ROWID STORE SERVICE_ORDER_CONTENT 3 2 34 INDEX RANGE SCAN STORE PK_SERVICE_CONTENT 2 2 SOC."SERVICE_ROW_ID"="IT"."SERVICE_ROW_ID" INDEX UNIQUE SCAN STORE IND_ID 0 1 POT."ID"="SOC"."PURCHASE_ROW_ID" TABLE ACCESS BY INDEX ROWID STORE PURCHASE_ORDER_TRN 1 1 12 TABLE ACCESS FULL FINANCE INVOICE_CONTENT 1407 30165 633465 INDEX FULL SCAN SETTING PK_GRADE 1 1 4 PG."GRADE_ID"="IT"."GRADE_ID" TABLE ACCESS BY INDEX ROWID SETTING PROD 2 1 7 INDEX RANGE SCAN SETTING PK_PROD 1 1 P."PROD_ID"="POT"."PROD_ID" TABLE ACCESS BY INDEX ROWID FINANCE INVOICE 1 1 8 INDEX UNIQUE SCAN FINANCE PK_INVOICE 0 1 IT."INVOICE_ID"="I"."INVOICE_ID" TABLE ACCESS BY INDEX ROWID STORE SERVICE_ORDER_TRN 1 1 8 INDEX UNIQUE SCAN STORE PK_SERVICE_TRN_1 0 1 SOT."SERVICE_ROW_ID"="SOC"."SERVICE_ROW_ID" INDEX UNIQUE SCAN STORE PK_SERVICE_ORDER 0 1 SO."SERVICE_ID"="SOT"."SERVICE_ID" TABLE ACCESS BY INDEX ROWID STORE SERVICE_ORDER 1 1 8 TABLE ACCESS FULL STORE STOCK 137 24175 314275 INDEX UNIQUE SCAN STORE PK_PO 0 1 4 PO."ORDER_ID"="POT"."ORDER_ID" TABLE ACCESS BY INDEX ROWID STORE SERVICE_ORDER_TRN 1 1 8 INDEX UNIQUE SCAN STORE PK_SERVICE_TRN_1 0 1 SOT."SERVICE_ROW_ID"="SOC"."SERVICE_ROW_ID" INDEX UNIQUE SCAN STORE PK_SERVICE_ORDER 0 1 SO."SERVICE_ID"="SOT"."SERVICE_ID" TABLE ACCESS BY INDEX ROWID STORE SERVICE_ORDER 1 1 8 TABLE ACCESS FULL STORE STOCK 137 24175 314275 INDEX UNIQUE SCAN FINANCE PK_INVOICE 0 1 IT."INVOICE_ID"="I"."INVOICE_ID" TABLE ACCESS BY INDEX ROWID FINANCE INVOICE 1 1 20 TABLE ACCESS FULL FINANCE STOCK_COST_TRN 8637 2242280 6726840 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 16:11 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
Грунов, А в двух других вариантах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 16:17 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
ГруновПлан получается такой вот ...Такой читай сам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 16:18 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
envГрунов, А в двух других вариантах? Это в варианте когда в результирующих полях только 1 поле. Сейчас для нормального варианта сделаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 16:19 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
ElicГруновПлан получается такой вот ...Такой читай сам. А как его сюда выложить чтобы был читабельным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 16:19 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
ГруновElicпропущено... Такой читай сам. А как его сюда выложить чтобы был читабельным Скриншотом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 16:20 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
Первая часть плана для запроса который выполняется быстро. Основной запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 16:30 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
Извините ошибся ... Это как раз тот который зависает. Который я до этого вылаживал в виде таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 16:32 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
Вот план исходного запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 16:34 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
ГруновДоброго времени суток. Подскажите пожалуйста, где может быть ошибка ... Есть вот такой запрос Код: 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. Выполняется отлично, быстро и надежно. 8-10 сек. Но если сделать 2 изменения запрос виснет. 1. Если убрать все из результирующих полей кроме i.invoice_id - запрос умирает. После 10 мин выполнения я его обрываю. 2. Если добавить в index в таблице invoice_content еще поля для индексирования (сейчас там только invoice_id, если добавить еще id, purchase_id, service_row_id) - результат тот же самый, запрос зависает. Подскажите почему так происходит? Что можно изменить? Возможные причины, спасибо. ------------------------------------------------------------ Veni. Vidi. Vici. По пункту 1 - в вас в оригинальном запросе it.invoice_id, а не i.invoice_id По пункту 2 - собрать статистику. И еще, по вопросу организации учета нот в консерватории риторический вопрос : почему в условиях объеденения таблиц нет алиаса tt ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 18:00 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
д0kХПо пункту 1 - в вас в оригинальном запросе it.invoice_id, а не i.invoice_id По пункту 2 - собрать статистику. И еще, по вопросу организации учета нот в консерватории риторический вопрос : почему в условиях объеденения таблиц нет алиаса tt ? 1 - если ставить it.invoice_id или i.invoice_id разницы нет. 2 - соберу, спасибо ... 3. and it.id=nvl(tt.id, 0) and it.service_row_id=nvl(tt.service_row_id, 0) ---- вот же связка ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 18:04 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
Груновд0kХПо пункту 1 - в вас в оригинальном запросе it.invoice_id, а не i.invoice_id По пункту 2 - собрать статистику. И еще, по вопросу организации учета нот в консерватории риторический вопрос : почему в условиях объеденения таблиц нет алиаса tt ? 1 - если ставить it.invoice_id или i.invoice_id разницы нет. 2 - соберу, спасибо ... 3. and it.id=nvl(tt.id, 0) and it.service_row_id=nvl(tt.service_row_id, 0) ---- вот же связка ... Я про это спрашиваю Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. tt после where я не нашел . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 18:17 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
Груновд0kХПо пункту 1 - в вас в оригинальном запросе it.invoice_id, а не i.invoice_id По пункту 2 - собрать статистику. И еще, по вопросу организации учета нот в консерватории риторический вопрос : почему в условиях объеденения таблиц нет алиаса tt ? 1 - если ставить it.invoice_id или i.invoice_id разницы нет. для вас нет, а для оптимизатора есть invoice i, invoice_content it разные таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 18:20 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
д0kХtt после where я не нашел . 4 строчка ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 18:40 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
Груновд0kХtt после where я не нашел . 4 строчка ... где тут 4 строчка : автор1. Если убрать все из результирующих полей кроме i.invoice_id - запрос умирает. После 10 мин выполнения я его обрываю. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 18:58 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
д0kХ, 1-- where i.invoice_dept>0 and i.invoice_kind=1 and i.invoice_voided=0 and i.invoice_type=8 and i.status=1 2-- and it.invoice_id=i.invoice_id and it.purchase_id>0 3-- and i.invoice_id not in (select invoice_id from finance.stock_cost_trn) 4-- and it.id=nvl(tt.id, 0) and it.service_row_id=nvl(tt.service_row_id, 0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 19:00 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
д0kХГруновпропущено... 4 строчка ... где тут 4 строчка : автор1. Если убрать все из результирующих полей кроме i.invoice_id - запрос умирает. После 10 мин выполнения я его обрываю. ? Код: plsql 1. 2. 3. 4. оставить вот так Код: plsql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 19:21 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
Груновд0kХ, 1-- where i.invoice_dept>0 and i.invoice_kind=1 and i.invoice_voided=0 and i.invoice_type=8 and i.status=1 2-- and it.invoice_id=i.invoice_id and it.purchase_id>0 3-- and i.invoice_id not in (select invoice_id from finance.stock_cost_trn) 4-- and it.id=nvl(tt.id, 0) and it.service_row_id=nvl(tt.service_row_id, 0) не вижу tt, но вижу внезапно прилетающую Ora-01427 извините я устал, советую вам переписать эту простыню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 19:43 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
д0kХГруновд0kХ, 1-- where i.invoice_dept>0 and i.invoice_kind=1 and i.invoice_voided=0 and i.invoice_type=8 and i.status=1 2-- and it.invoice_id=i.invoice_id and it.purchase_id>0 3-- and i.invoice_id not in (select invoice_id from finance.stock_cost_trn) 4-- and it.id=nvl(tt.id, 0) and it.service_row_id=nvl(tt.service_row_id, 0) не вижу tt, но вижу внезапно прилетающую Ora-01427 извините я устал, советую вам переписать эту простыню. Спасибо, за совет. Впринципе как раз этим и занимаемся ... Просто хотелось бы понять причину замерзания запроса на будущее ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 19:55 |
|
||
|
Запрос тормозит
|
|||
|---|---|---|---|
|
#18+
Груновд0kХпропущено... не вижу tt, но вижу внезапно прилетающую Ora-01427 извините я устал, советую вам переписать эту простыню. Спасибо, за совет. Впринципе как раз этим и занимаемся ... Просто хотелось бы понять причину замерзания запроса на будущее ... Я думаю, что причина замерзания в неявном коррелированном подзапросе, в 4 и 5 строчках отсуствие которых, срывают оптимизатору крышу на tt без явного условия объединения в on или where . Для начала, убрав поля из алиаса tt из списка полей , уберите алиас tt из from. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 20:08 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39366103&tid=1886818]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 257ms |
| total: | 548ms |

| 0 / 0 |
