On Wed, Jun 21, 2023 at 12:43 PM Tomas Vondra <tomas.von...@enterprisedb.com>
wrote:

> On 6/21/23 00:26, Marc Millas wrote:
> >
> >
> > On Tue, Jun 20, 2023 at 11:19 PM David Rowley <dgrowle...@gmail.com
> > <mailto:dgrowle...@gmail.com>> wrote:
> >
> >     On Wed, 21 Jun 2023 at 08:34, Marc Millas <marc.mil...@mokadb.com
> >     <mailto:marc.mil...@mokadb.com>> wrote:
> >     >
> >     > On Tue, Jun 20, 2023 at 10:14 PM David Rowley
> >     <dgrowle...@gmail.com <mailto:dgrowle...@gmail.com>> wrote:
> >     >>
> >     >> On Wed, 21 Jun 2023 at 07:42, Marc Millas <marc.mil...@mokadb.com
> >     <mailto:marc.mil...@mokadb.com>> wrote:
> >     >> > But if I do the same with clause one OR clause 2, I have to
> >     kill the request after an hour, seeing the filesystem showing more
> >     than 140 Mb of increased usage.
> >     >>
> >     >>
> >     > link to the anonymized plan of the req with one clause :
> >     https://explain.depesz.com/s/TWp4 <https://explain.depesz.com/s/TWp4
> >
> >
> > link to the plan with the second
> > clause alone: https://explain.depesz.com/s/byW5
> > <https://explain.depesz.com/s/byW5>
> > link to the plan with both clauses ORed (the one not
> > finishing) https://explain.depesz.com/s/jHO2
> > <https://explain.depesz.com/s/jHO2>
> >
> >
> >
> >     It's quite difficult to know what the problem is you want to fix
> here.
> >     Your initial post indicated it was the query with the OR condition
> >     that was causing you the problems, but the plan you've posted has no
> >     OR condition?!
> >
> >     You're more likely to get help here if you take time to properly
> >     explain the situation and post the information that's actually
> >     relevant to the problem you're having, or state the problem more
> >     clearly, as there's a mismatch somewhere.
> >
> >     It might also be worth having a look at
> >     https://wiki.postgresql.org/wiki/Slow_Query_Questions
> >     <https://wiki.postgresql.org/wiki/Slow_Query_Questions> . EXPLAIN
> is not
> >     going to tell us what part of the query is slow. I'll let the wiki
> >     page guide you into what to do instead.
> >
> >
> > I know that page. obviously, as I have to kill the request, I cannot
> > provide a explain analyze...
> >
>
> It's a bit weird the "victor" table is joined seemingly without any join
> conditions, leading to a cross join (which massively inflates the cost
> for joins above it). Maybe the anonymized plan mangles it somehow.
>

the query does:
 select blabla from table1 join table2 on (list of 9 fields ANDed and
corresponding to the index of both table1 and table2)
join table3 on table1.a=table3.a and table1.b=table3.b
join table4 on (list of 2 clauses table2.d=table4.e  and one clause
substr(table2.f)=table4.g  all ORed)
table1 and table2 are big (15M and 60M lines), table3 and table4 are small
(30k lines)

basically, if I rewrites the query beginning by the join between table2 and
table4, then join table1 and then table3, postgres generates the same plan,
which doesnt end.

if instead of the 3 clauses of the last join I keep one equality clause,
the explain plan looks the same, but executes in 45 secondes.


>
> regards
>
> --
> Tomas Vondra
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>

 Marc MILLAS

Reply via email to