The JDBC version is 9.4-1201-jdbc41.

Query :-

select count(*) OVER() AS
count,uuid,availability,objectname,datasourcename,datasourcetype,objecttype,health
from (select distinct on (health_timeseries_table.mobid) mobid,
health_timeseries_table.health, health_timeseries_table.timestamp from
health_timeseries_table where timestamp >= 1505989186834 and timestamp <=
1505990086834 ORDER BY health_timeseries_table.mobid DESC,
health_timeseries_table.timestamp DESC, health_timeseries_table.health ASC)
t right join (SELECT DISTINCT ON (object_table.uuid) uuid,
object_table.timestamp,object_table.availability,object_table.objectname,object_table.datasourcename,object_table.datasourcetype,object_table.objecttype
FROM object_table where  object_table.timestamp >= 0 and
object_table.timestamp <= 1505990086834 and object_table.tenantid =
'perspica' ORDER BY object_table.uuid DESC, object_table.timestamp DESC)u
on (t.mobid = u.uuid) order by health asc limit 20 offset 0;


Please let us know any other details?


Thanks and Regards

Subramaniam

On Thu, Sep 28, 2017 at 7:29 PM, Dave Cramer <p...@fastcrypt.com> wrote:

> What version of the driver are you using?
>
> The driver does not automatically use a cursor, but it does use prepared
> statements which can be slower.
>
>
> Can you provide the query and the jdbc query ?
>
>
>
> Dave Cramer
>
> da...@postgresintl.com
> www.postgresintl.com
>
> On 28 September 2017 at 05:59, Subramaniam C <subramaniam31...@gmail.com>
> wrote:
>
>> First output show the output when the query is executed from sql command
>> line. The second output show when it is executed from the application. AS
>> per the output it is clear that the when the query is executed through JDBC
>> its not using the index (health_index) instead its doing sequence scan.
>> Please let us know how this issue can be resolved from JDBC?
>>
>> 1.)
>>
>>
>> *Limit  (cost=510711.53..510711.58 rows=20 width=72)*
>>
>> *   ->  Sort  (cost=510711.53..511961.53 rows=500000 width=72)*
>>
>> *         Sort Key: health_timeseries_table.health*
>>
>> *         ->  WindowAgg  (cost=0.98..497406.71 rows=500000 width=72)*
>>
>> *               ->  Merge Left Join  (cost=0.98..491156.71 rows=500000
>> width=64)*
>>
>> *                     Merge Cond: (object_table.uuid =
>> health_timeseries_table.mobid)*
>>
>> *                     ->  Unique  (cost=0.42..57977.00 rows=500000
>> width=64)*
>>
>> *                           ->  Index Scan Backward using
>> object_table_pkey on object_table  (cost=0.42..56727.00 rows=500000
>> width=64)*
>>
>> *                                 Index Cond: (("timestamp" >= 0) AND
>> ("timestamp" <= '1505990086834'::bigint))*
>>
>> *                                 Filter: (tenantid = 'perspica'::text)*
>>
>> *                     ->  Materialize  (cost=0.56..426235.64 rows=55526
>> width=16)*
>>
>> *                           ->  Unique  (cost=0.56..425541.56 rows=55526
>> width=24)*
>>
>> *                                 ->  Index Only Scan
>> using health_index on health_timeseries_table  (cost=0.56..421644.56
>> rows=1558800 width=24)*
>>
>> *                                       Index Cond: (("timestamp" >=
>> '1505989186834'::bigint) AND ("timestamp" <= '1505990086834'::bigint))*
>>
>> *LOG:  duration: 1971.697 ms*
>>
>>
>>
>>
>>
>> 2.)
>>
>>
>> Limit  (cost=457629.21..457629.26 rows=20 width=72)
>>
>>   ->  Sort  (cost=457629.21..458879.21 rows=500000 width=72)
>>
>>         Sort Key: health_timeseries_table.health
>>
>>         ->  WindowAgg  (cost=367431.49..444324.39 rows=500000 width=72)
>>
>>               ->  Merge Left Join  (cost=367431.49..438074.39 rows=500000
>> width=64)
>>
>>                     Merge Cond: (object_table.uuid =
>> health_timeseries_table.mobid)
>>
>>                     ->  Unique  (cost=0.42..57977.00 rows=500000 width=64)
>>
>>                           ->  Index Scan Backward using object_table_pkey
>> on object_table  (cost=0.42..56727.00 rows=500000 width=64)
>>
>>                                 Index Cond: (("timestamp" >= '0'::bigint)
>> AND ("timestamp" <= '1505990400000'::bigint))
>>
>>                                 Filter: (tenantid = 'perspica'::text)
>>
>>                     ->  Materialize  (cost=367431.07..373153.32
>> rows=55526 width=16)
>>
>>                           ->  Unique  (cost=367431.07..372459.24
>> rows=55526 width=24)
>>
>>                                 ->  Sort  (cost=367431.07..369945.16
>> rows=1005634 width=24)
>>
>>                                       Sort Key:
>> health_timeseries_table.mobid DESC, health_timeseries_table."timestamp"
>> DESC, health_timeseries_table.health
>>
>>                                       ->  Seq Scan on
>> health_timeseries_table  (cost=0.00..267171.00 rows=1005634 width=24)
>>
>>
>>                                             Filter: (("timestamp" >=
>> '1505989500000'::bigint) AND ("timestamp" <= '1505990400000'::bigint))
>>
>> On Thu, Sep 28, 2017 at 2:56 PM, Pavy Philippe <
>> philippe.p...@worldline.com> wrote:
>>
>>> https://www.postgresql.org/docs/current/static/auto-explain.html
>>>
>>>
>>> -----Message d'origine-----
>>> De : pgsql-performance-ow...@postgresql.org [mailto:
>>> pgsql-performance-ow...@postgresql.org] De la part de Julien Rouhaud
>>> Envoyé : jeudi 28 septembre 2017 11:21
>>> À : Subramaniam C
>>> Cc : pgsql-performance@postgresql.org
>>> Objet : Re: [PERFORM] Slow query in JDBC
>>>
>>> On Thu, Sep 28, 2017 at 10:58 AM, Subramaniam C <
>>> subramaniam31...@gmail.com> wrote:
>>> > I configured cursor_tuple_fraction to 1 but still I am facing the same
>>> > issue.
>>>
>>> Can you show explain (analyze, buffers) of the query when run from psql
>>> and run from application (you can use auto_explain for that if needed, see
>>> https://www.postgresql.org/docs/current/static/auto-explain.html).
>>>
>>>
>>> --
>>> Sent via pgsql-performance mailing list (pgsql-performance@postgresql.
>>> org)
>>> To make changes to your subscription:
>>> http://www.postgresql.org/mailpref/pgsql-performance
>>>
>>> !!!*********************************************************
>>> ****************************
>>> "Ce message et les pièces jointes sont confidentiels et réservés à
>>> l'usage exclusif de ses destinataires. Il peut également être protégé par
>>> le secret professionnel. Si vous recevez ce message par erreur, merci d'en
>>> avertir immédiatement l'expéditeur et de le détruire. L'intégrité du
>>> message ne pouvant être assurée sur Internet, la responsabilité de
>>> Worldline ne pourra être recherchée quant au contenu de ce message. Bien
>>> que les meilleurs efforts soient faits pour maintenir cette transmission
>>> exempte de tout virus, l'expéditeur ne donne aucune garantie à cet égard et
>>> sa responsabilité ne saurait être recherchée pour tout dommage résultant
>>> d'un virus transmis.
>>>
>>> This e-mail and the documents attached are confidential and intended
>>> solely for the addressee; it may also be privileged. If you receive this
>>> e-mail in error, please notify the sender immediately and destroy it. As
>>> its integrity cannot be secured on the Internet, the Worldline liability
>>> cannot be triggered for the message content. Although the sender endeavours
>>> to maintain a computer virus-free network, the sender does not warrant that
>>> this transmission is virus-free and will not be liable for any damages
>>> resulting from any virus transmitted.!!!"
>>>
>>
>>
>

Reply via email to