lpad vs ||

From: Andrés P(dot)P(dot) <solopostgres(at)gmail(dot)com>
To: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: lpad vs ||
Date: 2010-09-03 01:45:30
Message-ID: AANLkTinv7gcEQDNoVLjUkN5aaGUi4Z1CpVX-AiyT-NEz@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message German Gomez 2010-09-03 06:35:02 RE: d
Previous Message Alvaro Herrera 2010-09-02 16:57:43 Re: log_min_duration_statement