Excerpts from Andrés P.P.'s message of jue sep 02 21:45:30 -0400 2010:
> Estimados listeros
> 
> Necesito confirmación a lo siguiente: hice dos updates sobre tablas cuya
> definición y carga fueron iguales:
> *En Desarrollo :*
> 
> upd1) update tabla1 set valor = lpad(substr(valor,4,9),11,76) where
> length(valor)=12;   21867.891 ms
> upd2) update tabla2 set valor = 76||substr(valor,4,9) where
> length(valor)=12;        *21119.145 ms*
> 
> (valor es la PK de la tabla,varchar y no hay más índices)
> 
> Ambas tablas de pruebas tienen *1.300.000* registros, 650.000 tienen un
> length(valor)=12 y los 650.000 restantes un length(valor)=13.

Los dos update cambian los registros con length(valor) = 12.  ¿Hay un error?


> *Real :*
> 
> En producción la tabla es de *13.000.000* de registros. Sobre ésta debo
> hacer 2 updates.. para length(valor)=12 y 13.
> El server está levemente mejor equipado en procesadores y ram que en
> desarrollo.(y asumiendo lo mismo en velocidad de disco).
> Preguntas:
> 
> - Asumo que el upd2 seguirá siendo más rápido?

No

> - Dejo el vacuum para el final?.. o después del 2do. update?

Te conviene antes del segundo update.  Si no hubiera índice en la
columna que estás cambiando, daría lo mismo (debido a HOT), pero no es
el caso.  Quizás te convenga botar los índices de la tabla antes de
hacer los update, luego vacuum, luego reconstruir los índices.

> - Asumo que el tiempo será mayor en la misma proporción del nuevo nro. de
> registros??. Osea puedo pensar que demorará aprox. *200000* ms??..

Mídelo, 200 segundos no es tanto.  Pero yo creo que debería tardar más.

> y lo último:  tienen alguna alternativa para estos updates en 8.2.5 ??..
> vi por ahí una línea para hacer un update único mezclando en el set el
> lenght y el substr.... pero no me pareció eficiente..

Si vas a cambiar los mismos registros, te conviene hacerlo todo de una
vez.

-- 
Álvaro Herrera <[email protected]>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a