Re: Very slow Query compared to Oracle / SQL - Server
От | Alexey M Boltenkov |
---|---|
Тема | Re: Very slow Query compared to Oracle / SQL - Server |
Дата | |
Msg-id | 9a713ea4-f672-412c-70c3-34b82c275b7f@yandex.ru обсуждение исходный текст |
Ответ на | Re: Very slow Query compared to Oracle / SQL - Server (luis.roberto@siscobra.com.br) |
Ответы |
Re: Very slow Query compared to Oracle / SQL - Server
|
Список | pgsql-performance |
On 05/06/21 19:11, luis.roberto@siscobra.com.br wrote:
----- Mensagem original -----De: "Semen Yefimenko" <semen.yefimenko@gmail.com> Para: "pgsql-performance" <pgsql-performance@lists.postgresql.org> Enviadas: Quinta-feira, 6 de maio de 2021 11:38:39 Assunto: Very slow Query compared to Oracle / SQL - ServerSELECT column1,..., column54 where ((entrytype = 4000 or entrytype = 4001 or entrytype = 4002) and (archivestatus <= 1)) order by timestampcol desc;The first thing I would try is rewriting the query to: SELECT column1,..., column54 FROM logtable WHERE (entrytype in (4000,4001,4002)) AND (archivestatus <= 1)) ORDER BY timestampcol DESC; Check if that makes a difference... Luis R. Weck
The IN statement will probable result in just recheck condition change to entrytype = any('{a,b,c}'::int[]). Looks like dispersion of archivestatus is not enough to use index idx_arcstatus.
Please try to create partial index with condition like (archivestatus <= 1) and rewrite select to use (archivestatus is not null and archivestatus <= 1).
CREATE INDEX idx_arcstatus_le1 ON schema.logtable ( archivestatus ) where (archivestatus <= 1) TABLESPACE tablespace;
В списке pgsql-performance по дате отправления: