Subject Re: [firebird-support] What is more effective execute block or select?
Author Mark Rotteveel
On Wed, 27 Jan 2016 10:48:49 -0200, "hamacker sirhamacker@...
[firebird-support]" <firebird-support@yahoogroups.com> wrote:
> I would know whats methods is more effective, per exemple:
> To know if itens exists or not, select:
> select
> case
> when exists(select 1 from cv_itens where id_cv=51716)
> then 'Y'
> else 'N'
> end as existe_itens
> from rdb$database
>
> OR using block execute:
> execute block
> returns(exist varchar(1))
> as
> begin
> exist='N';
> if (exists(select 1 from cv_itens where id_cv=51716)) then exist='Y';
> suspend;
> end
>
> I think that first method using rdb$database as source, checking
> permissions and others things and second method is not and more
powerfull
> using psql.
>
> I would like to know what you guys think about.

I'd use select 1 from cv_itens where id_cv=51716

and check if you have a row or not. If it can produce multiple rows, then
use select first 1 1 from cv_itens where id_cv=51716, or select 1 from
cv_itens where id_cv=51716 rows 1.

That is much simpler, and likely has less overhead.

Mark