- Mailing list pgsql-general

From Atul Kumar
Subject
Date
Msg-id CA+ONtZ7rwscWc-=wE3jBG6Xx47siPc8=5qOoyX4EJsi38YaLeA@mail.gmail.com
Whole thread Raw
Responses Re:  (Igor Korot <ikorot01@gmail.com>)
List pgsql-general
Hi,

I have one query like below :


 SELECT
                                        m.iMemberId "memberId",
                                        m.cFirstName "firstName",
                                        m.cLastName "lastName",
                                        m.cFirstName || ' ' ||
m.cLastName "fullName",
                                        m.cPlayerStateId "stateId",
                                        DECODE(m.cBirthdateVerify, 1,
'Yes', 'No') "birthdateVerify",
                                        TO_CHAR(m.dBirthDate,
'MM/DD/YYYY') "dateOfBirth",
                                        p.cPosition "position",
                                        p.cJerseyNumber "number",
                                        DECODE(daps.status, 2, 'PT',
1, 'FT', NULL) "daps",
                                        op.cCitizenship "citizenship",
                                        op.cNotes "notes",
                                        NVL(op.cCountryOfBirth,
op.cCountryOfBirthOther) "countryOfBirth"
                                FROM sam_gameroster r
                                INNER JOIN sam_guestParticipant p ON
p.iMemberId = r.iMemberId AND p.iContainerId = r.iContainerId
                                INNER JOIN sam_member m ON m.iMemberId
= p.iMemberId
                                INNER JOIN sam_container c ON
c.iContainerId = r.iContainerId
                                LEFT JOIN sam_container lc ON
c.iContainerLinkId = lc.iContainerId
                                LEFT JOIN sam_participant op ON
op.iassignContainerId = NVL(c.iContainerLinkId, c.iContainerId) AND
op.imemberID = m.imemberId
                                LEFT JOIN (
                                        SELECT pp.iMemberId,
                                                MAX(CASE WHEN
pp.cDpFtStatus = 'PT' THEN 2
                                                        WHEN
pp.cDpFtStatus = 'FT' THEN 1
                                                ELSE 0 END) status
                                        FROM sam_participant pp
                                        WHERE pp.igroupid =
getGroupId() GROUP BY pp.iMemberId
                                ) daps ON daps.iMemberId = r.iMemberId
                                LEFT JOIN sam_playersuspension ps ON
ps.iMemberId = m.iMemberId AND ps.iEventId = r.iEventId
                                WHERE r.iEventId = '7571049' AND
r.iContainerId = '15257396' AND ((ps.iIsAutoCreated = 1 AND
ps.iIsTombstone = 1) OR ps.iPlayerSuspensionId IS NULL)
                                ORDER BY LOWER(m.cLastName), LOWER(m.cFirstName)





And the execution of above query is




            QUERY PLAN

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Sort  (cost=783789.11..783789.11 rows=1 width=377) (actual
time=12410.619..12410.619 rows=0 loops=1)
   Sort Key: (lower((m.clastname)::text)), (lower((m.cfirstname)::text))
   Sort Method: quicksort  Memory: 25kB
   Buffers: shared hit=525065
   ->  Merge Right Join  (cost=781822.64..783789.10 rows=1 width=377)
(actual time=12410.609..12410.609 rows=0 loops=1)
         Merge Cond: (pp.imemberid = r.imemberid)
         Buffers: shared hit=525065
         ->  GroupAggregate  (cost=781820.08..783074.57 rows=55308
width=11) (actual time=12410.251..12410.251 rows=1 loops=1)
               Group Key: pp.imemberid
               Buffers: shared hit=524884
               ->  Sort  (cost=781820.08..781960.36 rows=56113
width=10) (actual time=12410.234..12410.234 rows=3 loops=1)
                     Sort Key: pp.imemberid
                     Sort Method: quicksort  Memory: 207217kB
                     Buffers: shared hit=524884
                     ->  Seq Scan on sam_participant pp
(cost=0.00..777393.87 rows=56113 width=10) (actual
time=0.284..10871.913 rows=2335154 loops=1)
                           Filter: ((igroupid)::integer =
(current_setting('env.groupid'::text))::integer)
                           Rows Removed by Filter: 8887508
                           Buffers: shared hit=524884
         ->  Materialize  (cost=2.56..23.14 rows=1 width=184) (actual
time=0.354..0.354 rows=0 loops=1)
               Buffers: shared hit=181
               ->  Nested Loop Left Join  (cost=2.56..23.14 rows=1
width=184) (actual time=0.352..0.353 rows=0 loops=1)
                     Join Filter: (ps.ieventid = r.ieventid)
                     Filter: (((ps.iisautocreated = '1'::numeric) AND
(ps.iistombstone = '1'::numeric)) OR (ps.iplayersuspensionid IS NULL))
                     Buffers: shared hit=181
                     ->  Nested Loop Left Join  (cost=2.28..22.82
rows=1 width=190) (actual time=0.351..0.351 rows=0 loops=1)
                           Join Filter: (op.iassigncontainerid =
nvl(c.icontainerlinkid, c.icontainerid))
                           Buffers: shared hit=181
                           ->  Nested Loop  (cost=1.84..21.95 rows=1
width=159) (actual time=0.350..0.350 rows=0 loops=1)
                                 Buffers: shared hit=181
                                 ->  Nested Loop  (cost=1.41..13.49
rows=1 width=153) (actual time=0.349..0.350 rows=0 loops=1)
                                       Join Filter: (r.imemberid = p.imemberid)
                                       Buffers: shared hit=181
                                       ->  Nested Loop
(cost=0.99..13.04 rows=1 width=69) (actual time=0.051..0.274 rows=25
loops=1)
                                             Buffers: shared hit=106
                                             ->  Index Only Scan using
gmr_pk on sam_gameroster r  (cost=0.56..4.58 rows=1 width=19) (actual
time=0.029..0.051 rows=25 loops=1)
                                                   Index Cond:
((ieventid = '7571049'::numeric) AND (icontainerid =
'15257396'::numeric))
                                                   Heap Fetches: 0
                                                   Buffers: shared hit=5
                                             ->  Index Scan using
member_pk on sam_member m  (cost=0.43..8.45 rows=1 width=50) (actual
time=0.007..0.007 rows=1 loops=25)
                                                   Index Cond:
(imemberid = r.imemberid)
                                                   Buffers: shared hit=101
                                       ->  Index Scan using gp_pk on
sam_guestparticipant p  (cost=0.42..0.44 rows=1 width=97) (actual
time=0.002..0.002 rows=0 loops=25)
                                             Index Cond:
((icontainerid = '15257396'::numeric) AND (imemberid = m.imemberid))
                                             Buffers: shared hit=75
                                 ->  Index Scan using cont_pk on
sam_container c  (cost=0.43..8.45 rows=1 width=12) (never executed)
                                       Index Cond: (icontainerid =
'15257396'::numeric)
                           ->  Index Scan using newindex5 on
sam_participant op  (cost=0.43..0.76 rows=7 width=56) (never executed)
                                 Index Cond: (imemberid = m.imemberid)
                     ->  Index Scan using uniq_psusp_memb_event on
sam_playersuspension ps  (cost=0.29..0.31 rows=1 width=26) (never
executed)
                           Index Cond: ((imemberid = m.imemberid) AND
(ieventid = '7571049'::numeric))
 Planning time: 2.818 ms
 Execution time: 12416.544 ms
(52 rows)





issue I Found out:

 ->  Seq Scan on sam_participant pp  (cost=0.00..777393.87 rows=56113
width=10) (actual time=0.277..10869.750 rows=2335154 loops=1)
                           Filter: ((igroupid)::integer =
(current_setting('env.groupid'::text))::integer)
                           Rows Removed by Filter: 8887508
                           Buffers: shared hit=524884





I have already an index on the column igroupid of table
sam_participant, but still it is doig seq scan, which is time
consuming or is their something else is fishy.

Can someone please help me by giving one's feedback.



Regards.



pgsql-general by date:

Previous
From: "W.P."
Date:
Subject: Re: Damaged (during upgrade?) table, how to repair?
Next
From: Igor Korot
Date:
Subject: Re: