Cómo acelerar una consulta de actualización lenta

Tengo los siguientesUPDATE consulta:

UPDATE Indexer.Pages SET LastError=NULL where LastError is not null;

En este momento, esta consulta tarda aproximadamente 93 minutos en completarse. Me gustaría encontrar maneras de hacer esto un poco más rápido.

losIndexer.Pages La tabla tiene alrededor de 506,000 filas, y aproximadamente 490,000 de ellas contienen un valor paraLastError, así que dudo que pueda aprovechar los índices aquí.

La tabla (cuando está sin comprimir) tiene alrededor de 46 gigas de datos, sin embargo, la mayoría de esos datos se encuentran en un campo de texto llamadohtml. Creo que simplemente cargar y descargar muchas páginas está causando la desaceleración. Una idea sería hacer una nueva tabla consólo laId y elhtml campo, y mantenerIndexer.Pages Lo más pequeño posible. Sin embargo, probar esta teoría sería una cantidad decente de trabajo, ya que en realidad no tengo el espacio del disco duro para crear una copia de la tabla. Tendría que copiarlo en otra máquina, dejar caer la tabla y luego copiar los datos, lo que probablemente tomaría toda la tarde.

Ideas? Estoy usando Postgres 9.0.0.

ACTUALIZAR:

Aquí está el esquema:

CREATE TABLE indexer.pages
(
  id uuid NOT NULL,
  url character varying(1024) NOT NULL,
  firstcrawled timestamp with time zone NOT NULL,
  lastcrawled timestamp with time zone NOT NULL,
  recipeid uuid,
  html text NOT NULL,
  lasterror character varying(1024),
  missingings smallint,
  CONSTRAINT pages_pkey PRIMARY KEY (id ),
  CONSTRAINT indexer_pages_uniqueurl UNIQUE (url )
);

También tengo dos índices:

CREATE INDEX idx_indexer_pages_missingings
  ON indexer.pages
  USING btree
  (missingings )
  WHERE missingings > 0;

y

CREATE INDEX idx_indexer_pages_null
  ON indexer.pages
  USING btree
  (recipeid )
  WHERE NULL::boolean;

No hay activadores en esta tabla, y hay otra tabla que tiene una restricción FK enPages.PageId.

Respuestas a la pregunta(3)

Su respuesta a la pregunta