Juan Jose Muchas gracias funciono perfecto
El mié, 29 mar 2023 a las 13:56, Juan José Santamaría Flecha (< juanjo.santama...@gmail.com>) escribió: > > > El mié, 29 mar 2023, 17:43, Jose Mercedes Venegas Acevedo < > jvenegasp...@gmail.com> escribió: > >> Hola comunidad buen dia para todos >> >> Espero puedan colaborarme con la siguiente situacion tengo una tabla de >> auditoria que graba todas las acciones que se realizan sobre mi tablas de >> lotes que representan terrenos de casas la tabla tiene esta estructura >> >> CREATE TABLE IF NOT EXISTS public.cat_lote_audit >> ( >> audit_id integer NOT NULL DEFAULT >> nextval('cat_lote_audit_audit_id_seq'::regclass), >> audit_timestamp timestamp with time zone NOT NULL DEFAULT >> CURRENT_TIMESTAMP, >> audit_dbuser name COLLATE pg_catalog."C" NOT NULL DEFAULT >> CURRENT_USER, >> audit_action character(1) COLLATE pg_catalog."default" NOT NULL, >> audit_old cat_lote, >> audit_new cat_lote, >> CONSTRAINT cat_lote_audit_pkey PRIMARY KEY (audit_id), >> CONSTRAINT cat_lote_audit_audit_action_check CHECK (audit_action = >> ANY (ARRAY['I'::bpchar, 'U'::bpchar, 'D'::bpchar])) >> ) >> >> como puede verse audit_old y audit_new son del tipo de la tabla a la que >> le hago la auditoria y contiene todos los campos de la tabla cat_lote >> >> cuando quiero mirar el historico de cambios hago una consulta como esta? >> >> select row_number() over(),audit_timestamp,audit_dbuser,(audit_old).id as >> id_antiguo,(audit_old).the_geom as geo_antiguo, >> (audit_old).nom_cli as nom_cli_antiguo,(audit_old).v_gral as >> v_gral_antiguo,(audit_new).nom_cli as nomcli_nuevo,(audit_new).v_gral as >> v_gral_nuevo,(audit_new).the_geom as geo_nuevo from cat_lote_audit where >> (audit_old).id = '18012200210' >> >> Es decir dentro de audit_old o audit_new colocando los paréntesis para >> encerrar al campo y luego el punto puedo referirme a un campo de la tabla y >> revisar los valores antiguos y nuevos hasta ahi todo bien. >> >> Ahora viene la interrogante resulta que tengo varios millones de >> registros y efectuar una consulta como la anterior ya tarda un tiempo >> considerable asi que intente crear un indice asi: >> >> CREATE INDEX idx_audit_lote_gid_old >> ON cat_lote_audit ((audit_old).id); >> > > Creo que faltan paréntesis: > > CREATE INDEX idx_audit_lote_gid_old > ON cat_lote_audit (((audit_old).id)); > > Un saludo, > > Juan José Santamaría Flecha > >> >> -- José Mercedes Venegas Acevedo cel 955725384