Thread: Functions or Rules and Views?

Functions or Rules and Views?

From
Rory Campbell-Lange
Date:
I'm embarking on a new project and have been reading up on the new v7.3
functions. I have a few general questions about how to use these and
whether or not I should use functions exclusively, or also use rules and
views.

For instance, it seems easy to wirte functions that write values to two
tables on an insert, obviating the need for rules. It also appears that
a function can replace a view.

Are there any penalties in terms of the speed of execution of a function
over a view?

Some general comments would be greatly appreciated.

Thanks,
Rory

--
Rory Campbell-Lange
<rory@campbell-lange.net>
<www.campbell-lange.net>

Re: Functions or Rules and Views?

From
Josh Berkus
Date:
Rory,

> I'm embarking on a new project and have been reading up on the new v7.3
> functions. I have a few general questions about how to use these and
> whether or not I should use functions exclusively, or also use rules and
> views.

I generally use a mix of views, triggers, and data-push functions.

> Are there any penalties in terms of the speed of execution of a function
> over a view?

A SELECT view will generally be much faster than a rowset-returning function,
and is usually more easily adapted for partial selects, re-ordering, etc.

I have not compared the execution speed of updatable views + rules vs.
data-push functions, as I use the latter almost exclusively since they allow
me to bundle security and rights checking, and custom error messages, into
the same function, something which is more cumbersome with updatable views.

However, it depends on your users and your application.  If you have an app
where some of the users will utilize direct SQL access, then rules may be a
better choice.

--
Josh Berkus
Aglio Database Solutions
San Francisco

Re: Functions or Rules and Views?

From
Rory Campbell-Lange
Date:
Thanks for the info, Josh.
Looks like I'll be doing most of my work in functions (and triggers)
then. Also it looks like one can make table agnostic functions in some
cases (although there is a penalty because of the need for rebuilding
the query plan for each table/row in this case) which could be useful.

Kind regards,
Rory

On 26/05/03, Josh Berkus (josh@agliodbs.com) wrote:
> > I'm embarking on a new project and have been reading up on the new v7.3
> > functions. I have a few general questions about how to use these and
> > whether or not I should use functions exclusively, or also use rules and
> > views.
>
> I generally use a mix of views, triggers, and data-push functions.
>
> > Are there any penalties in terms of the speed of execution of a function
> > over a view?
>
> A SELECT view will generally be much faster than a rowset-returning function,
> and is usually more easily adapted for partial selects, re-ordering, etc.
>
> I have not compared the execution speed of updatable views + rules vs.
> data-push functions, as I use the latter almost exclusively since they allow
> me to bundle security and rights checking, and custom error messages, into
> the same function, something which is more cumbersome with updatable views.

--
Rory Campbell-Lange
<rory@campbell-lange.net>
<www.campbell-lange.net>