Thread: Functions or Rules and Views?
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>
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
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>