id SERIAL PRIMARY KEY,
exchangeid integer NOT NULL REFERENCES exchanges(id) ON DELETE RESTRICT ON UPDATE CASCADE,
symbolid integer NOT NULL REFERENCES symbols(id) ON DELETE RESTRICT ON UPDATE CASCADE,
time timestamp with time zone NOT NULL,
close money NOT NULL,
CONSTRAINT hist_exchangeid_symbolid_time_key UNIQUE (exchangeid, symbolid, time)
);
-- Indices -------------------------------------------------------
CREATE UNIQUE INDEX hist_exchangeid_symbolid_time_key ON hist(exchangeid int4_ops,symbolid int4_ops,time timestamptz_ops);
CREATE UNIQUE INDEX hist_pkey ON hist(id int4_ops);
Очень долго выполняеться запрос:
select max(extract(epoch from time)) from hist where exchangeid = $1 and symbolid = $2
Время несколько минут, размер быза 18М строк.
Куда копать ?
Заранее спасибо!
Всегда сначала "копайте" в план запроса. А вообще, перепишите запрос как: SELECT extract(epoch FROM max(time)) FROM hist WHERE exchangeid = $1 AND symbolid = $2
Обсуждают сегодня