約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 を取得する必要があり、クエリを完了するのに約20 秒SELECT component_id from audit_log GROUP BY component_id
かかります。どうすればそれを最適化できますか?
更新日:
component_id にインデックスがあります
CREATE INDEX audit_log_component_id_idx
ON audit_log
USING btree
(component_id COLLATE pg_catalog."default");
UPD 2 :コンポーネント名を別のテーブルに移動することが1つの解決策であることは知っていましたが、もっと簡単な解決策があることを願っていました。みんなありがとう。