From: | <g(dot)hintermayer(at)inode(dot)at> |
---|---|
To: | <sszabo(at)megazone23(dot)bigpanda(dot)com> |
Cc: | <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: indices - used by which user ? |
Date: | 2003-05-08 07:20:31 |
Message-ID: | 12337.213.33.72.146.1052378431.squirrel@webmail.inode.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
> I don't think there are separate access privs for indexes. Can you give
> the schema/query/explain analyze output for the query before and after
> the \c - <user> as a comparison point?
Jep:
Table "public.auftrag_l2"
Column | Type | Modifiers
-----------+------------------------+-----------
p_code | text |
variety | text |
a_nr | integer |
sub_nr | integer |
ch_nr | real |
ch_nr_sfm | real |
case_nr | integer |
datum | date |
zeit | time without time zone |
dauer | integer |
print | text |
format | character(1) |
gramm | real |
brand | text |
outrate | smallint |
reliab | smallint |
seq | integer |
tech | character varying(3) |
Indexes: idx_auftrag_l2 unique btree (a_nr),
idx_auftrag_l2_pcode btree (p_code),
idx_auftrag_l2_seq btree (seq),
idx_auftrag_l2_variety btree (variety)
Table "public.produkt"
Column | Type | Modifiers
--------+-----------------------+-----------
p_code | character varying(10) |
p_name | character varying(30) |
Query/Explain as non postgres user:
explain analyze SELECT * FROM auftrag_l2 NATURAL INNER JOIN produkt WHERE
datum>='01-05-2003' AND datum<'09-05-2003' ORDER BY sub_nr,datum,zeit;
QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------
Sort (cost=37417.56..37417.59 rows=15 width=139) (actual
time=776.29..776.31 rows=26 loops=1)
Sort Key: auftrag_l2.sub_nr, auftrag_l2.datum, auftrag_l2.zeit
-> Nested Loop (cost=0.00..37417.26 rows=15 width=139) (actual
time=25.66..776.00 rows=26 loops=1)
Join Filter: ("outer".p_code = ("inner".p_code)::text)
-> Seq Scan on auftrag_l2 (cost=0.00..134.47 rows=15 width=99)
(actual time=3.19..4.30 rows=26 loops=1)
Filter: ((datum >= '01-05-2003'::date) AND (datum <
'09-05-2003'::date))
-> Seq Scan on produkt (cost=0.00..2417.41 rows=2141 width=40)
(actual time=0.01..25.11 rows=2141 loops=26)
Total runtime: 776.49 msec
reconnect as same user (very strange) or as postgres user \c - aprol or \c
postgres
different query plan, no idea why:
QUERY PLAN
------------------------------------------------------------------------------------------------------------------------------------------------
Sort (cost=69891.40..69892.03 rows=250 width=139) (actual
time=82.42..82.65 rows=257 loops=1)
Sort Key: auftrag_l2.sub_nr, auftrag_l2.datum, auftrag_l2.zeit
-> Nested Loop (cost=0.00..69881.45 rows=250 width=139) (actual
time=25.93..80.74 rows=257 loops=1)
-> Seq Scan on produkt (cost=0.00..2417.41 rows=2141 width=40)
(actual time=0.02..27.12 rows=2141 loops=1)
-> Index Scan using idx_auftrag_l2_pcode on auftrag_l2
(cost=0.00..31.49 rows=2 width=99) (actual time=0.02..0.02 rows=0
loops=2141)
Index Cond: (auftrag_l2.p_code = ("outer".p_code)::text)
Filter: ((datum >= '2003-01-05'::date) AND (datum <
'2003-09-05'::date))
Total runtime: 83.11 msec
So that's a factor of about 10 faster, only by changing the user, very
strange.
Hope the output is readable despite the long lines.
Thanks vor any help
Gerhard
From | Date | Subject | |
---|---|---|---|
Next Message | g.hintermayer | 2003-05-08 08:34:08 | Re: indices - used by which user ? |
Previous Message | Dean Gibson (DB Administrator) | 2003-05-08 06:31:24 | Bug or limitation? |