Re: Views don't seem to use indexes?

From: Tim Slechta <trslechta(at)gmail(dot)com>
To: pgsql-performance(at)lists(dot)postgresql(dot)org
Subject: Re: Views don't seem to use indexes?
Date: 2021-10-28 15:00:31
Message-ID: CAJVU3y3odLD3b1inQDd+=+nJDE3U=mnpFnF7SeuYqOUhO4G37w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Tom, David,

Thank you for the time and information.

I lost my system this morning, so I need to re-establish a system and do
some additional homework.

Thanks again.

-Tim

BTW: here is the definition of the pworkspaceobject table.

tc=# \d+ pworkspaceobject

Table "public.pworkspaceobject"
Column | Type | Collation |
Nullable | Default | Storage | Stats target | Description
-----------------------------+-----------------------------+-----------+----------+---------+----------+--------------+-------------
puid | character varying(15) | |
not null | | extended | |
pobject_name | character varying(128) | |
not null | | extended | |
pobject_desc | character varying(240) | |
| | extended | |
pobject_type | character varying(32) | |
not null | | extended | |
pobject_application | character varying(32) | |
not null | | extended | |
vla_764_7 | integer | |
not null | 0 | plain | |
pip_classification | character varying(128) | |
| | extended | |
vla_764_10 | integer | |
not null | 0 | plain | |
pgov_classification | character varying(128) | |
| | extended | |
vla_764_12 | integer | |
not null | 0 | plain | |
pfnd0revisionid | character varying(32) | |
| | extended | |
vla_764_18 | integer | |
not null | 0 | plain | |
vla_764_20 | integer | |
not null | 0 | plain | |
rwso_threadu | character varying(15) | |
| | extended | |
rwso_threadc | integer | |
| | plain | |
prevision_limit | integer | |
not null | | plain | |
prevision_number | integer | |
not null | | plain | |
rowning_organizationu | character varying(15) | |
| | extended | |
rowning_organizationc | integer | |
| | plain | |
pactive_seq | integer | |
| | plain | |
rowning_projectu | character varying(15) | |
| | extended | |
rowning_projectc | integer | |
| | plain | |
pfnd0maturity | integer | |
| | plain | |
pdate_released | timestamp without time zone | |
| | plain | |
pfnd0isrevisiondiscontinued | smallint | |
| | plain | |
pfnd0inprocess | smallint | |
| | plain | |
aoid | character varying(15) | |
not null | NULL::character varying | extended | |
arev_category | integer | |
not null | 48 | plain | |
aspace_uid | character varying(15) | |
| NULL::character varying | extended | |
avalid_from | timestamp without time zone | |
not null | to_timestamp('1900/01/02 00:00:00'::text, 'YYYY/MM/DD
HH24:MI:SS'::text)::timestamp without time zone | plain | |
avalid_to | timestamp without time zone | |
| | plain | |
vla_764_26 | integer | |
not null | 0 | plain | |
pawp0issuspect | smallint | |
| | plain | |
vla_764_24 | integer | |
not null | 0 | plain | |
vla_764_23 | integer | |
not null | 0 | plain | |
Indexes:
"pipworkspaceobject" PRIMARY KEY, btree (puid)
"pipworkspaceobject_0" btree (aoid)
"pipworkspaceobject_1" btree (upper(pobject_type::text))
"pipworkspaceobject_2" btree (upper(pobject_name::text))
"pipworkspaceobject_3" btree (pobject_type)
"pipworkspaceobject_4" btree (pobject_name)
"pipworkspaceobject_5" btree (rwso_threadu)
"pipworkspaceobject_6" btree (rowning_projectu)
Access method: heap
Options: autovacuum_analyze_scale_factor=0.0,
autovacuum_analyze_threshold=500

On Thu, Oct 28, 2021 at 1:15 AM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> Tim Slechta <trslechta(at)gmail(dot)com> writes:
> > Why does the planner not use an index when a view is involved?
>
> It's not about a "view" ... you'd get the same results if you wrote
> out the UNION ALL construct in-line as a sub-select.
>
> I think you may be shooting yourself in the foot by not making sure that
> the UNION ALL arms match in data type. You did not show us the definition
> of pworkspaceobject, but if pworkspaceobject.pobject_name isn't of type
> text (maybe it's varchar?) then the type mismatch would prevent pushing
> down a condition on that column. The source code says:
>
> * For subqueries using UNION/UNION ALL/INTERSECT/INTERSECT ALL, we can
> * push quals into each component query, but the quals can only reference
> * subquery columns that suffer no type coercions in the set operation.
> * Otherwise there are possible semantic gotchas.
>
> I'm too tired to reconstruct an example of the semantic issues...
>
> regards, tom lane
>

In response to

Browse pgsql-performance by date

  From Date Subject
Next Message arjun shetty 2021-11-02 17:13:22 PostgreSQLv14 TPC-H performance GCC vs Clang
Previous Message Tom Lane 2021-10-28 06:15:52 Re: Views don't seem to use indexes?