powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Подскажите как переписать запрос. Очень долго выполняется update
10 сообщений из 10, страница 1 из 1
Подскажите как переписать запрос. Очень долго выполняется update
    #39352541
x17.mstu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
explain 
update meta_data_vault.common_documents_stage3322 stage
set document_id = (
  select max(doc.document_id)
  from templ.hub_document doc
  where stage.doc_date is not distinct from doc.doc_date
  and stage.code_doc_type is not distinct from doc.code_doc_type
  and stage.doc_series is not distinct from doc.doc_series
  and stage.doc_number is not distinct from doc.doc_number
  and stage.doc_organisation is not distinct from doc.doc_organisation)
...
Рейтинг: 0 / 0
Подскажите как переписать запрос. Очень долго выполняется update
    #39352544
x17.mstu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
"Update on common_documents_stage3322 stage  (cost=0.00..3067471699.07 rows=210514 width=555)"
"  ->  Seq Scan on common_documents_stage3322 stage  (cost=0.00..3067471699.07 rows=210514 width=555)"
"        SubPlan 1"
"          ->  Aggregate  (cost=14571.25..14571.26 rows=1 width=8)"
"                ->  Seq Scan on hub_document doc  (cost=0.00..14571.25 rows=1 width=8)"
"                      Filter: ((NOT (stage.doc_date IS DISTINCT FROM doc_date)) AND (NOT (stage.code_doc_type IS DISTINCT FROM code_doc_type)) AND (NOT (stage.doc_series IS DISTINCT FROM doc_series)) AND (NOT (stage.doc_number IS DISTINCT FROM doc_number)) (...)"
...
Рейтинг: 0 / 0
Подскажите как переписать запрос. Очень долго выполняется update
    #39352579
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x17.mstu,

в зависимости от того какие поля у вас проиндексированны, перепишите для начала
Код: sql
1.
stage.doc_date is not distinct from doc.doc_date AND...


в
Код: sql
1.
(stage.doc_date = doc.doc_date OR (stage.doc_date IS NULL AND doc.doc_date IS NULL)) AND...
...
Рейтинг: 0 / 0
Подскажите как переписать запрос. Очень долго выполняется update
    #39352586
x17.mstu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lonepsycho,
stage - это промежуточный слой, я не могу их индексировать.
...
Рейтинг: 0 / 0
Подскажите как переписать запрос. Очень долго выполняется update
    #39352596
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x17.mstu,

а templ.hub_document?
...
Рейтинг: 0 / 0
Подскажите как переписать запрос. Очень долго выполняется update
    #39352610
x17.mstu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lonepsycho, Там индексы есть на все эти поля
...
Рейтинг: 0 / 0
Подскажите как переписать запрос. Очень долго выполняется update
    #39352616
x17.mstu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
EXPLAIN (ANALYZE)
select * from meta_data_vault.common_documents_stage3322 stage
 join templ.hub_document doc on stage.doc_date = doc.doc_date
 and (stage.code_doc_type = doc.code_doc_type or (stage.code_doc_type is null and doc.code_doc_type is null))
 and (stage.doc_series = doc.doc_series or (stage.doc_series is null and doc.doc_series is null))
 and (stage.doc_number = doc.doc_number or (stage.doc_number is null and doc.doc_number is null))
 and (stage.doc_organisation= doc.doc_organisation or (stage.doc_organisation is null and doc.doc_organisation is null))
where stage.order_record='33:22:011100:602-33/000/2013-2'
...
Рейтинг: 0 / 0
Подскажите как переписать запрос. Очень долго выполняется update
    #39352618
x17.mstu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
"Nested Loop  (cost=4.71..17835.42 rows=1 width=721) (actual time=0.302..122.535 rows=2 loops=1)"
"Execution time: 122.648 ms"
"Planning time: 2.303 ms"
"              Index Cond: (doc_date = stage.doc_date)"
"        ->  Bitmap Index Scan on i_document_doc_date  (cost=0.00..4.71 rows=38 width=0) (actual time=0.070..0.070 rows=104 loops=2)"
"        Heap Blocks: exact=206"
"        Rows Removed by Filter: 104"
"        Filter: (((stage.code_doc_type = code_doc_type) OR ((stage.code_doc_type IS NULL) AND (code_doc_type IS NULL))) AND ((stage.doc_series = doc_series) OR ((stage.doc_series IS NULL) AND (doc_series IS NULL))) AND ((stage.doc_number = doc_number) OR ( (...)"
"        Recheck Cond: (doc_date = stage.doc_date)"
"        Rows Removed by Filter: 210512"
"  ->  Bitmap Heap Scan on hub_document doc  (cost=4.71..149.31 rows=1 width=164) (actual time=0.322..0.986 rows=1 loops=2)"
"        Filter: (order_record = '33:22:011100:602-33/000/2013-2'::text)"
"  ->  Seq Scan on common_documents_stage3322 stage  (cost=0.00..17536.78 rows=2 width=557) (actual time=0.037..120.542 rows=2 loops=1)"
...
Рейтинг: 0 / 0
Подскажите как переписать запрос. Очень долго выполняется update
    #39352621
x17.mstu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Подскажите как переписать запрос. Очень долго выполняется update
    #39352629
x17.mstu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
"Nested Loop  (cost=0.42..369376.22 rows=578 width=721) (actual time=0.994..15563.625 rows=223948 loops=1)"
"  ->  Seq Scan on common_documents_stage3322 stage  (cost=0.00..16997.42 rows=215742 width=557) (actual time=0.015..100.522 rows=210514 loops=1)"
"  ->  Index Scan using i_document_doc_date on hub_document doc  (cost=0.42..1.62 rows=1 width=164) (actual time=0.033..0.072 rows=1 loops=210514)"
"        Index Cond: (doc_date = stage.doc_date)"
"        Filter: (((stage.code_doc_type = code_doc_type) OR ((stage.code_doc_type IS NULL) AND (code_doc_type IS NULL))) AND ((stage.doc_series = doc_series) OR ((stage.doc_series IS NULL) AND (doc_series IS NULL))) AND ((stage.doc_number = doc_number) OR ( (...)"
"        Rows Removed by Filter: 80"
"Planning time: 2.069 ms"
"Execution time: 15582.591 ms"
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Подскажите как переписать запрос. Очень долго выполняется update
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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