У меня есть таблица с около 5 миллионов строкPostgreSQL Выберите из таблицы 5 миллионов строк
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
);
Мне нужно, чтобы все составные идентификаторы с чем-то вроде SELECT component_id from audit_log GROUP BY component_id
и она занимает около 20 секунд для завершения запроса. Как я могу это оптимизировать?
UPD:
У меня есть индекс component_id
CREATE INDEX audit_log_component_id_idx
ON audit_log
USING btree
(component_id COLLATE pg_catalog."default");
UPD 2: Ну, я знал, что одно решение для перемещения имен компонентов в отдельную таблицу, но надеялся, что было простое решение. Спасибо, парни.
Вы хотите сказать, что "select separate component_id from audit_log"? –
@DavidAldridge Ну, отличная скорость в течение 2 секунд – message
Это семантически правильный способ написания запроса. Использование группы - это более длинный и нестандартный способ ее написания. –