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.

*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?
- Dejo el vacuum para el final?.. o después del 2do. update?
- Asumo que el tiempo será mayor en la misma proporción del nuevo nro. de
registros??. Osea puedo pensar que demorará aprox. *200000* ms??.. o es
mucho optimismo?.. :D .... (cargar la tabla de prueba con 1.300.000 de
registros fue rápido... pero al recrear la tabla de prueba y querer cargarla
con 13.000.000 se demoró demasiado... por eso hago la consulta sobre la
proporción para el update)

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..

Saludos
AP.

Responder a