RE: Postgres DB Slowness

<[email protected]>
Newsgroups gmane.comp.db.postgresql.admin
Message-ID <2A91BEF8171A5349931391E0C721CC535B627ADE@CPEMS-KPN501.KPNCNL.LOCAL>



-----Original Message-----
From: Juan José Santamaría Flecha <[email protected]>
Sent: Friday, August 23, 2019 1:08 PM
To: Bhattacharjee, Soumik <[email protected]>
Cc: [email protected]; [email protected]
Subject: Re: Postgres DB Slowness



On Fri, Aug 23, 2019 at 10:17 AM <[email protected]<mailto:[email protected]>> wrote:

>

> Query

> ===========

> SELECT

>     i.*

> FROM

>     npcurren.num_cps_instelling i,

>     npcurren.num_aangesloten_nr n

> WHERE

>     n.fk_exploit_nop_int_oper_id = 'PTT'

>     AND i.telefoonnummer != n.anr_nummer_hoog

>     AND i.telefoonnummer != n.anr_nummer_laag;

>

> Explain Plan

> ======================

> "Nested Loop  (cost=2068.47..1769226624.33 rows=101090505159 width=73)"

>



This query looks wrong, resulting in a cartesian join.



As other people have pointed out, the execution times do not seem reasonable, could you change the 'SELECT *' into a 'SELECT count(1)'

for the comparison?



Regards,



Juan José Santamaría Flecha



-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



Hi Juan,



The query plan is below -



numbes_test=# explain analyze select i.* from npcurren.NUM_CPS_INSTELLING i, npcurren.NUM_AANGESLOTEN_NR n where n.FK_EXPLOIT_NOP_INT_OPER_ID = 'PTT' and i.TELEFOONNUMMER != n.ANR_NUMMER_HOOG and i.TELEFOONNUMMER != n.ANR_NUMMER_LAAG;Â



                                                                       QUERY PLAN

--------------------------------------------------------------------------------------------------------------------------------------------------------

Nested Loop  (cost=2071.86..1817248003.24 rows=103834572306 width=73) (actual time=68.512..28074371.506 rows=98046804138 loops=1)

   Join Filter: (((i.telefoonnummer)::text <> (n.anr_nummer_hoog)::text) AND ((i.telefoonnummer)::text <> (n.anr_nummer_laag)::text))

   Rows Removed by Join Filter: 36398

   ->  Seq Scan on num_cps_instelling i  (cost=0.00..12485.52 rows=539852 width=73) (actual time=0.069..403.077 rows=539852 loops=1)

   ->  Materialize  (cost=2071.86..130606.58 rows=192339 width=22) (actual time=0.002..16.490 rows=181618 loops=539852)

         ->  Bitmap Heap Scan on num_aangesloten_nr n  (cost=2071.86..129644.88 rows=192339 width=22) (actual time=68.425..555.068 rows=181618 loops=1)

               Recheck Cond: ((fk_exploit_nop_int_oper_id)::text = 'PTT'::text)

               Heap Blocks: exact=51470

               ->  Bitmap Index Scan on anr_idx6  (cost=0.00..2023.78 rows=192339 width=0) (actual time=59.276..59.276 rows=181618 loops=1)

                     Index Cond: ((fk_exploit_nop_int_oper_id)::text = 'PTT'::text)

Planning time: 4.702 ms

Execution time: 31536903.127 ms

(12 rows)









Does this also looks bad for performance with Data types- as there is varchar in a number records field ? - The table DDL is attached



    anr_nummer_laag character varying(20) COLLATE pg_catalog."default" NOT NULL,

    anr_nummer_hoog character varying(20) COLLATE pg_catalog."default" NOT NULL,
Table_Def.txt (text/plain, 4.1 KB)
CREATE TABLE npcurren.num_aangesloten_nr
(
    anr_nummer_laag character varying(20) COLLATE pg_catalog."default" NOT NULL,
    anr_nummer_hoog character varying(20) COLLATE pg_catalog."default" NOT NULL,
    fk_eigenaar_nop_int_oper_id character varying(6) COLLATE pg_catalog."default",
    fk_sta_id character varying(1) COLLATE pg_catalog."default",
    fk_sac_id character varying(1) COLLATE pg_catalog."default",
    fk_moeder_hst_spc_id character varying(4) COLLATE pg_catalog."default",
    fk_moeder_cgb_code integer,
    fk_exploit_nop_int_oper_id character varying(6) COLLATE pg_catalog."default",
    fk_dienst_hst_spc_id character varying(4) COLLATE pg_catalog."default",
    fk_dienst_cgb_code integer,
    anr_soort_dienst character varying(2) COLLATE pg_catalog."default",
    anr_roepnummer character varying(20) COLLATE pg_catalog."default",
    anr_lri character varying(24) COLLATE pg_catalog."default",
    anr_logisch_mutatiemoment timestamp without time zone,
    anr_technisch_mutatiemoment timestamp without time zone NOT NULL,
    anr_mutatie_gebruiker_id character varying(8) COLLATE pg_catalog."default" NOT NULL,
    anr_netnummer character varying(4) COLLATE pg_catalog."default",
    anr_heeft_cvi_dienst_jn character varying(1) COLLATE pg_catalog."default",
    fk_num_voip_platform_id smallint,
    anr_heeft_cvi_zm_dienst_yn character varying(1) COLLATE pg_catalog."default",
    anr_cvi_kenmerk character varying(10) COLLATE pg_catalog."default",
    anr_cvi_telco character varying(8) COLLATE pg_catalog."default" NOT NULL,
    CONSTRAINT anr_prx PRIMARY KEY (anr_nummer_laag),
    CONSTRAINT sys_c0012384 FOREIGN KEY (fk_sac_id)
        REFERENCES npcurren.num_soort_actie (sac_id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION,
    CONSTRAINT sys_c0012385 FOREIGN KEY (fk_sta_id)
        REFERENCES npcurren.num_status (sta_id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION,
    CONSTRAINT sys_c0012386 FOREIGN KEY (fk_num_voip_platform_id)
        REFERENCES npcurren.num_voip_platform (platform_id) MATCH SIMPLE
        ON UPDATE NO ACTION
        ON DELETE NO ACTION
)
WITH (
    OIDS = FALSE
)
TABLESPACE pg_default;

ALTER TABLE npcurren.num_aangesloten_nr
    OWNER to postgres;

-- Index: anr_idx1

-- DROP INDEX npcurren.anr_idx1;

CREATE INDEX anr_idx1
    ON npcurren.num_aangesloten_nr USING btree
    (fk_moeder_hst_spc_id COLLATE pg_catalog."default", fk_moeder_cgb_code)
    TABLESPACE pg_default;

-- Index: anr_idx2

-- DROP INDEX npcurren.anr_idx2;

CREATE INDEX anr_idx2
    ON npcurren.num_aangesloten_nr USING btree
    (fk_dienst_hst_spc_id COLLATE pg_catalog."default", fk_dienst_cgb_code)
    TABLESPACE pg_default;

-- Index: anr_idx3

-- DROP INDEX npcurren.anr_idx3;

CREATE INDEX anr_idx3
    ON npcurren.num_aangesloten_nr USING btree
    (fk_sac_id COLLATE pg_catalog."default")
    TABLESPACE pg_default;

-- Index: anr_idx4

-- DROP INDEX npcurren.anr_idx4;

CREATE INDEX anr_idx4
    ON npcurren.num_aangesloten_nr USING btree
    (fk_sta_id COLLATE pg_catalog."default")
    TABLESPACE pg_default;

-- Index: anr_idx5

-- DROP INDEX npcurren.anr_idx5;

CREATE INDEX anr_idx5
    ON npcurren.num_aangesloten_nr USING btree
    (fk_eigenaar_nop_int_oper_id COLLATE pg_catalog."default")
    TABLESPACE pg_default;

-- Index: anr_idx6

-- DROP INDEX npcurren.anr_idx6;

CREATE INDEX anr_idx6
    ON npcurren.num_aangesloten_nr USING btree
    (fk_exploit_nop_int_oper_id COLLATE pg_catalog."default")
    TABLESPACE pg_default;

-- Index: anr_idx7

-- DROP INDEX npcurren.anr_idx7;

CREATE INDEX anr_idx7
    ON npcurren.num_aangesloten_nr USING btree
    (anr_nummer_hoog COLLATE pg_catalog."default")
    TABLESPACE pg_default;

-- Index: anr_idx8

-- DROP INDEX npcurren.anr_idx8;

CREATE INDEX anr_idx8
    ON npcurren.num_aangesloten_nr USING btree
    (anr_netnummer COLLATE pg_catalog."default")
    TABLESPACE pg_default;

-- Index: anr_idx9

-- DROP INDEX npcurren.anr_idx9;

CREATE INDEX anr_idx9
    ON npcurren.num_aangesloten_nr USING btree
    (fk_num_voip_platform_id)
    TABLESPACE pg_default;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.