Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
je dispose de deux table fact (30 million lignes) et cmd (5 million ligne)
je veux updater fact par une valeur de cmd comme suite :
update fact set num_id =cmd_id from cmd where num_fact=num_cmd
j'ai un index au niveau fact sur num_fact et un index au niveau cmd sur num_cmd
mais en exécutant la requête jattends plus de 2 heures sans fin
Merci pour votre aide
Hors ligne
Bonjour,
Quel plan obtenez-vous avec un EXPLAIN de la requête? Y a-t-il des verrous non accordés dans pg_locks lorsque la requête est exécutée ?
Julien.
https://rjuju.github.io/
Hors ligne
"Update on fact (cost=1398076.01..1551054.73 rows=0 width=0)"
" -> Hash Join (cost=1398076.01..1551054.73 rows=6318235 width=20)"
" Hash Cond: (cmd.num_cmd = (fact.num_fact)::text)"
" -> Seq Scan on cmd (cost=0.00..136393.35 rows=6318235 width=23)"
" -> Hash (cost=1151586.56..1151586.56 rows=19719156 width=15)"
" -> Seq Scan on fact (cost=0.00..1151586.56 rows=19719156 width=15)"
Hors ligne
par contre ci je fait
select * from cmd,fact where num_fact=num_cmd limit 100
il passe bien par les index
"Limit (cost=0.99..47.38 rows=100 width=586)"
" -> Merge Join (cost=0.99..2930456.81 rows=6318235 width=586)"
" Merge Cond: (cmd.num_cmd = (fact.num_fact)::text)"
" -> Index Scan using idx_num_cmd on cmd (cost=0.43..484425.81 rows=6318235 width=61)"
" -> Index Scan using idx_num_fact on fact (cost=0.56..4331328.67 rows=19837009 width=525)"
Merci pour votre aide
Dernière modification par mse10 (26/10/2022 20:17:04)
Hors ligne
Bonjour ,
je suis toujours bloqué qui peux m'aider
Hors ligne
Pages : 1