我有大约 500 万行的表
CREATE TABLE audit_log
(
event_time timestamp with time zone NOT NULL DEFAULT now(),
action smallint, -- 1:modify, 2:create, 3:delete, 4:security, 9:other
level smallint NOT NULL DEFAULT 20, -- 10:minor, 20:info, 30:warning, 40:error
component_id character varying(150),
CONSTRAINT audit_log_pk PRIMARY KEY (audit_log_id)
)
WITH (
OIDS=FALSE
);
我需要使用类似的东西获取所有组件 ID,完成查询SELECT component_id from audit_log GROUP BY component_id
大约需要20 秒。我该如何优化呢?
更新:
我在 component_id 上有索引
CREATE INDEX audit_log_component_id_idx
ON audit_log
USING btree
(component_id COLLATE pg_catalog."default");
UPD 2:嗯,我知道一种解决方案是将组件名称移动到单独的表中,但希望有一个更简单的解决方案。多谢你们。