Performance question

Поиск
Список
Период
Сортировка
От Anil Menon
Тема Performance question
Дата
Msg-id CAHzbRKc_=d8HeJ=w7ymCRHqxMUHK6xWe57Jm0WPb=_XyKqb15Q@mail.gmail.com
обсуждение исходный текст
Ответы Re: Performance question  (Francisco Olarte <folarte@peoplecall.com>)
Re: Performance question  (Adrian Klaver <adrian.klaver@aklaver.com>)
Re: Performance question  (Albe Laurenz <laurenz.albe@wien.gv.at>)
Список pgsql-general
Hello,

I would like to ask from your experience which would be the best "generic" method for checking if row sets of a certain condition exists in a PLPGSQL function.

I know of 4 methods so far (please feel free to add if I missed out any others)

1) get a count (my previous experience with ORCL shaped this option)

select count(*) into vcnt
from table
where <<condition>>
if vcnt >0 then
  do X
else
  do y
end if
Cons : It seems doing a count(*) is not the best option for PG

2) Use a non-count option
select primary_key_Col into vcnt
from table
where <<condition>>
if found then
  do X
else
  do y
end if
Cons :Some people seems not to prefer this as (AFAIU) it causes a plpgsql->sql->plpgsql switches

3) using perform
perform primary_key_Col into vcnt
from table
where <<condition>>
if found then
  do X
else
  do y
end if

Seems to remove the above (item 2) issues (if any)

4) using exists
if exists ( select 1 from table where <<condition>> ) then
 do x
else
 do y
end if


My question is what would be the best (in terms of performance) method to use? My gut feeling is to use option 4 for PG. Am I right or is there any other method?

Thanks in advance
Anil

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

Предыдущее
От: "Zuiderhoek, Jeroen"
Дата:
Сообщение: Building debug version with MSVC 2013 for 64bit: No _d postfix on dll and lib files...
Следующее
От: Francisco Olarte
Дата:
Сообщение: Re: Performance question