Skip site navigation (1) Skip section navigation (2)

Re: Update muy largo

From: Oswaldo Hernández <listas(at)soft-com(dot)es>
To: Gabriel Ferro <gabrielrferro(at)yahoo(dot)com(dot)ar>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Update muy largo
Date: 2009-01-23 16:15:25
Message-ID: 4979ED1D.6090205@soft-com.es (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Gabriel Ferro escribió:
> Siguiendo un poco con el hilo de mi post anterior, para recordarles tengo una funcion que recorre una tabla de personas y le agrega ceros a la izquierda a todos los numdoc.
>  Creo que la gran demora de esto (lleva casi 72Hs) es porque tengo un indice sobre el campo (numdoc) que estoy actualizando y como los los registros se insertaron secuencialmente desde archivos planos ordenados por nombres (y sin haber existido en ese momento el indice de numdoc)...por ende el UPDATE me hace registro por registro pero ordenados por numdoc y ahi es que demora tanto.... 
> no se si mi cabeza anda mal ya que tengo 38 pirulitos pero creo recordar que (en cobol me parece) cuando se hacia una operacion SQL se podia indicar que indice usar, se puede hacer en postgres esto? en este caso especial indicarle a posgres que no use indices sino que realice un barrido secuencial, sin tener que borrar y luego recrear los indices?
> 

Hola Grabriel,

En la funcion que enviabas en el post anterior veo que lo unico que haces es completar un campo con 
ceros, lo cual no veo porque no lo haces directamente con una sentencia UPDATE:

(Ojo sin probar)

update
	padrones.personas
set
	numdoc = repeat('0', 12-length(numdoc)) || numdoc
where
	length(numdoc) < 12

Esto deberia ser mucho mas rápido y eficiente que la funcion.


Sobre el proceso que lleva 72 horas parece que demasiado tiempo. Yo miraria a ver si esta siendo 
bloqueado por algún otro, no recuerdo si esto se veia consultando la tabla pg_locks, o habia alguna 
funcion especifica para ello.

Saludos,

-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.

In response to

Responses

pgsql-es-ayuda by date

Next:From: Fabio AriasDate: 2009-01-23 16:28:07
Subject: Re: AYUDA CON PARAMETROS
Previous:From: Juan RamirezDate: 2009-01-23 16:14:31
Subject: Crear tabla detalle. Cómo lo hago. ¿Un trigger?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group