Re: Strange select query

Поиск
Список
Период
Сортировка
От lbayuk@mindspring.com (ljb)
Тема Re: Strange select query
Дата
Msg-id 9nu0qv$1o8b$1@news.tht.net
обсуждение исходный текст
Ответ на Strange select query  (bobson@alpha.pl)
Список pgsql-general
bobson@alpha.pl wrote:
>Hellow,
>
>I notice wired behavior of backend,
>
>for instance I've 3 tables TA, TB, TC with about 1k of records each,
>
>and I do something like that:
>
>select * from TA as a, TB as b, TC as c where
>position('some text' in a.textfield)>0 or
>(position('some text' in b.textfield)>0 and a.index=b.referencefield) or
>(position('some text' in c.textfield)>0 and a.index=b.referencefield
>and b.other_referencefield=c.index);
>
>the backend start to execute query, but it seems to be 'never ending
>story' because after 15 minutes of work I steel haven't result, and
>backend still was eating my RAM. I know that this query is ugly and
>bad, but I think backend will reject such query at parsing.

It seems to me that the query is valid, but is basically doing a
cross join or cartesian product join on 3 tables. This means all
combinations of rows from all 3 tables needs to be looked at. With
1000 rows per table, that is 1,000,000,000 rows that the database
needs to look at to see if it matches your other conditions.

В списке pgsql-general по дате отправления:

Предыдущее
От: Jason Earl
Дата:
Сообщение: Re: get certain # of recs
Следующее
От: "Erol Öz"
Дата:
Сообщение: Ynt: pg_dump error - LOCALIZATION PROBLEM