Hi,

Here is the query  :
*duration: 2533.734 ms  statement: *

*SELECT news.url_text,news.title, comments.name, comments.createdate,
comments.user_id, comments.comment FROM news, comments WHERE comments.cid=
news.id  AND comments.published='1' GROUP BY news.url_text,news.title
comments.name, comments.createdate, comments.user_id, comments.comment ORDER
BY comments.createdate DESC LIMIT 3
*

And here is the query plan :
                                                              QUERY
PLAN
----------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=4313.54..4313.55 rows=3 width=595) (actual
time=288.525..288.528 rows=3 loops=1)
   ->  Sort  (cost=4313.54..4347.26 rows=13486 width=595) (actual
time=288.523..288.523 rows=3 loops=1)
         Sort Key: comments.createdate
         ->  HashAggregate  (cost=3253.60..3388.46 rows=13486 width=595)
(actual time=137.521..148.132 rows=13415 loops=1)
               ->  Hash Join  (cost=1400.73..3051.31 rows=13486 width=595)
(actual time=14.298..51.049 rows=13578 loops=1)
                     Hash Cond: ("outer".cid = "inner".id)
                     ->  Seq Scan on comments  (cost=0.00..1178.72
rows=13480 width=522) (actual time=0.012..17.434 rows=13418 loops=1)
                           Filter: (published = 1)
                     ->  Hash  (cost=1391.18..1391.18 rows=3818 width=81)
(actual time=14.268..14.268 rows=3818 loops=1)
                           ->  Seq Scan on news  (cost=0.00..1391.18
rows=3818 width=81) (actual time=0.021..10.072 rows=3818 loops=1)

The same is being requested from different sessions . So why is it not being
cached .
*
postgresq.conf --current --
shared_buffers = 410000                         # min 16 or
max_connections*2, 8KB each
temp_buffers = 11000                    # min 100, 8KB each
#max_prepared_transactions = 5          # can be 0 or more
# note: increasing max_prepared_transactions costs ~600 bytes of shared
memory
# per transaction slot, plus lock space (see max_locks_per_transaction).
work_mem = 51024                        # min 64, size in KB
#maintenance_work_mem = 16384           # min 1024, size in KB
#max_stack_depth = 2048                 # min 100, size in KB
#---------------------------------------------------------------------------
# QUERY TUNING
#---------------------------------------------------------------------------

# - Planner Method Configuration -

#enable_bitmapscan = on
#enable_hashagg = on
#enable_hashjoin = on
#enable_indexscan = on
#enable_mergejoin = on
#enable_nestloop = on
#enable_seqscan = on
#enable_sort = on
#enable_tidscan = on

# - Planner Cost Constants -

effective_cache_size = 692674           # typically 8KB each
#random_page_cost = 4                   # units are one sequential page
fetch
                                        # cost
#cpu_tuple_cost = 0.01                  # (same)
#cpu_index_tuple_cost = 0.001           # (same)
#cpu_operator_cost = 0.0025             # (same)

# - Genetic Query Optimizer -

#geqo = on
#geqo_threshold = 12
#geqo_effort = 5                        # range 1-10
#geqo_pool_size = 0                     # selects default based on effort
#geqo_generations = 0                   # selects default based on effort
#geqo_selection_bias = 2.0              # range 1.5-2.0

# - Other Planner Options -

#default_statistics_target = 10         # range 1-1000*

cheers,
Peter
On Sun, Jun 21, 2009 at 7:42 PM, Robert Haas <robertmh...@gmail.com> wrote:

> On Sun, Jun 21, 2009 at 6:54 AM, Peter Alban<peter.alb...@gmail.com>
> wrote:
> > Should PG realize that if the table data is same should the query result
> set
> > also be the same ?
>
> No.  That's not so easy to implement as you might think.  Saving the
> results of each previous query in case someone issues the same query
> again without having changed anything in the meantime would probably
> cost more in performance on average that you'd get out of it.
>
> > Where do I see what the PG does ? I can see now the query's that take
> long
> > time ,but do not have information about what the optimizer does neither
> when
> > the DB decides about to table scan or cache ?
>
> Can't you get this from EXPLAIN and EXPLAIN ANALYZE?
>
> ...Robert
>

Reply via email to