Re: When to store data that could be derived - Mailing list pgsql-general

From Chris Travers
Subject Re: When to store data that could be derived
Date
Msg-id CAKt_ZftscGJqnsFdabUVg8MvV49wqP3b0zCr5ep_FdLkVFCCQA@mail.gmail.com
Whole thread Raw
In response to Re: When to store data that could be derived  (Frank <frank@chagford.com>)
List pgsql-general


On Sun, Mar 24, 2019 at 9:05 AM Frank <frank@chagford.com> wrote:


On 2019-03-24 9:25 AM, Ron wrote:
> On 3/24/19 1:42 AM, Frank wrote:
>> Hi all
>>
>> As I understand it, a  general rule of thumb is that you should never
>> create a physical column if the data could be derived from existing
>> columns. A possible reason for breaking this rule is for performance
>> reasons.
>>
>> I have a situation where I am considering breaking the rule, but I am
>> not experienced enough in SQL to know if my reason is valid. I would
>> appreciate it if someone could glance at my 'before' and 'after'
>> scenarios and see if, from a 'gut-feel' point of view, I should proceed.
>>

[snip]

>
> Sure the second query joins a lot of tables, but is pretty straightforward.
>
> What REALLY worries me is whether or not the query optimiser would look
> at the WHERE CASE, run away screaming and then make it use sequential
> scans. Thus, even query #1 would be slow.
>

I had not realised that. I hope someone else chimes in on this.

There are a few other things to note here.

1  If the data is frequently used in its derivative form, putting it in a function helps, and
2.  You can index the output of the function which means you run it on insert/update time and can often avoid running it on selection time if it is just a part of the where clause.

In my experience usually  we have used trigger-updated functions when the field values are very large or expensive, and may need to be part of the column list, and functions with functional indexes when we don't need to ever put them in the select column list or where the columns are small and easy to calculate.

--
Best Wishes,
Chris Travers

Efficito:  Hosted Accounting and ERP.  Robust and Flexible.  No vendor lock-in.

pgsql-general by date:

Previous
From: Dean Rasheed
Date:
Subject: Re: regr_slope returning NULL
Next
From: Tony Shelver
Date:
Subject: Re: When to store data that could be derived