On Wed, Sep 19, 2018 at 8:27 PM Andreas Kretschmer <andr...@a-kretschmer.de>
wrote:

>
>
> Am 19.09.2018 um 16:43 schrieb Durgamahesh Manne:
> >
> >
> > On Wed, Sep 19, 2018 at 8:02 PM Andreas Kretschmer
> > <andr...@a-kretschmer.de <mailto:andr...@a-kretschmer.de>> wrote:
> >
> >
> >
> >     Am 19.09.2018 um 15:51 schrieb Durgamahesh Manne:
> >     > I have created BRIN index on few columns of the table without any
> >     > issues. But i am unable to create BRIN index on one column of the
> >     > table as i got error listed below
> >     >
> >     >
> >     > [local]:6263 postgres@huawei=# CREATE INDEX brin_idx on huawei
> >     using
> >     > brin ("dFetch");
> >     > ERROR:  data type boolean has no default operator class for access
> >     > method "brin"
> >     > HINT:  You must specify an operator class for the index or define a
> >     > default operator class for the data type.
> >
> >     honestly, a BRIN-Index on a bool-column doesn't make much sense.
> >     What do
> >     you want to achive? Maybe a partial index with a where-condition
> >     on that
> >     column makes much more sense.
> >
> >
> >     Regards, Andreas
> >
> >     --
> >     2ndQuadrant - The PostgreSQL Support Company.
> >     www.2ndQuadrant.com <http://www.2ndQuadrant.com>
> >
> >
> >
> > Hi
> >
> >
> > I want to execute distinct query at less possible time
> >
> > for that reason ,Even i have already tried with BTREE indexes & HASH
> > indexes on required columns .distinct query execution time was not
> reduced
> >
> > select  distinct sub_head."vchSubmittersCode" ,rec."vchFileName" ,
> > rec."vchCusipFundIDSubFundID" , rec."vchFundUnitPrice"  ,
> > sub_head."vchValuationDate" ,rec."vchAdvisorLabel" from  "table1" rec
> > join  "table2" sub_head on
> > rec."vchSubmittersCode"=sub_head."vchSubmittersCode" where
> > rec."bFetch"=false and sub_head."bFetch"=false ;
> >
> > Query taken around 7 minutes time to execute with BTREE indexes & HASH
> > indexes on required columns
> >
>
> try an index like
>
> create index idx_t1 on table1 ("vchSubmittersCode") where "bFetch"=false
> and
> create index idx_t2 on table2 ("vchSubmittersCode") where "bFetch"=false
>
> and check if the plan changed and the indexes are in use. You can use
> create index concurrently to prevent lockings.
>
>
>
> Regards, Andreas
>
> --
> 2ndQuadrant - The PostgreSQL Support Company.
> www.2ndQuadrant.com
>
>
>
Hi
 As per your suggestion

 i have created  partial  indexes with where condition on required columns

distinct query execution time was not reduced as query taken around 7
minutes time to execute with indexes & without indexes

so i ran explain analyze for distinct query

EXPLAIN ANALYZE select  distinct sub_head."vchSubmittersCode"
,rec."vchFileName" , rec."vchCusipFundIDSubFundID" ,
rec."vchFundUnitPrice"
,  sub_head."vchValuationDate" ,rec."vchAdvisorLabel" from  table1 rec
join  table2 sub_head on
 rec."vchSubmittersCode"=sub_head."vchSubmittersCode" where
rec."bFetch"=false and sub_head."bFetch"=false ;


 Unique  (cost=5871873.64..6580630.73 rows=7400074 width=89) (actual
time=326397.551..389515.863 rows=3700000 loops=1)
                              |
|   ->  Sort  (cost=5871873.64..5973124.65 rows=40500405 width=89) (actual
time=326397.550..372470.846 rows=40500000 loops=1)
                        |
|         Sort Key: sub_head."vchSubmittersCode", rec."vchFileName",
rec."vchCusipFundIDSubFundID", rec."vchFundUnitPrice",
sub_head."vchValuationDate", rec."vchAdvisorLabel" |
|         Sort Method: external merge  Disk: 3923224kB

                       |
|         ->  Hash Join  (cost=21.06..457723.28 rows=40500405 width=89)
(actual time=0.339..6939.296 rows=40500000 loops=1)
                            |
|               Hash Cond: ((rec."vchSubmittersCode")::text =
(sub_head."vchSubmittersCode")::text)
                                      |
|               ->  Seq Scan on table1 rec  (cost=0.00..1822.66 rows=100001
width=80) (actual time=0.011..56.998 rows=100000 loops=1)
  |
|                     Filter: (NOT "bFetch")

                       |
|                     Rows Removed by Filter: 4706

                       |
|               ->  Hash  (cost=16.00..16.00 rows=405 width=11) (actual
time=0.319..0.319 rows=405 loops=1)
                            |
|                     Buckets: 1024  Batches: 1  Memory Usage: 26kB

                        |
|                     ->  Seq Scan on table2 sub_head  (cost=0.00..16.00
rows=405 width=11) (actual time=0.005..0.248 rows=405 loops=1)             |
|                           Filter: (NOT "bFetch")

                       |
|                           Rows Removed by Filter: 375

                        |
| Planning time: 0.237 ms

                        |
| Execution time: 390252.089 ms



so please help in reducing the distinct query execution time

Regrads

Durgamahesh Manne

Reply via email to