Re: Poor Query

Поиск
Список
Период
Сортировка
От Pierre-Frédéric Caillaud
Тема Re: Poor Query
Дата
Msg-id opsilr02qxcq72hf@musicbox
обсуждение исходный текст
Ответ на Re: Poor Query  (Pallav Kalva <pkalva@deg.cc>)
Ответы Re: Poor Query  (Pallav Kalva <pkalva@deg.cc>)
Список pgsql-performance
    Your suffering comes from the "where ba.bankaccountID = u.bankaccountID"
in the subselect. It means postgres has to run the subselect once for each
row in Users. You want the subselect to run only once, and return one (or
more?) bankaccountid's, then fetch the users from Users.

    Just remove the "where ba.bankaccountID = u.bankaccountID" !

> select userID, fname, lname, email, phone, dateEntered, dateCanceled,
> dateSuspended, billAmount, billDate, dateBilled, datePaid, '?' as
> searches
> from Users u
> where bankaccountid in  (select bankaccountid
>            from bankaccount ba
>            where ba.bankaccountID = u.bankaccountID
>            and   ba.accountnumber = '12345678'
>            and ba.routingNumber = '12345678')
> order by UserID desc
> limit 500

New version :

  select userID, fname, lname, email, phone, dateEntered, dateCanceled,
  dateSuspended, billAmount, billDate, dateBilled, datePaid, '?' as
  searches
  from Users u
  where bankaccountid in  (select bankaccountid
             from bankaccount ba
             WHERE    ba.accountnumber = '12345678'
             and ba.routingNumber = '12345678')

You could also do this :

  select u.* from Users u, bankaccount ba
    where u.bankaccountid = ba.bankaccountid
    and   ba.accountnumber = '12345678'
             and ba.routingNumber = '12345678')




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

Предыдущее
От: Andrew Sullivan
Дата:
Сообщение: Re: Alternatives to Dell?
Следующее
От: Pallav Kalva
Дата:
Сообщение: Re: Poor Query