> On Sep 23, 2021, at 8:33 AM, Rob Sargent <robjsarg...@gmail.com> wrote: > > On 9/23/21 10:16 AM, Israel Brewster wrote: >>> On Sep 23, 2021, at 4:34 AM, Ryan Booz <r...@timescale.com >>> <mailto:r...@timescale.com>> wrote: >>> >>> Heh, I honestly forgot about the recursive CTE. Certainly worth a try and >>> wouldn't require installing other extensions. >>> >>> This is what depesz is referring to: >>> https://wiki.postgresql.org/wiki/Loose_indexscan >>> <https://wiki.postgresql.org/wiki/Loose_indexscan> >> Thanks for the pointer. Will definitely have to spend some time wrapping my >> brain around that one - I’ve done some CTE’s before, but not recursive that >> I can recall. Should be fun! >> >> If it helps matters any, my structure is currently the following: >> >> table “stations” listing station details (name, latitude, longitude, etc) >> with a smallint primary key “id" >> table “data” with many (many!) data columns (mostly doubles), a station >> column that is a smallint referencing the stations table, and a channel >> column which is a varchar containing the *name* of the channel the data came >> in on. >> >> I will readily accept that this may not be the best structure for the DB. >> For example, perhaps the channel column should be normalized out as has been >> mentioned a couple of times as an option. This would make sense, and would >> certainly simplify this portion of the project. >> >> If I do go with a lookup table updated by a trigger, what would be the best >> option for the query the trigger runs - an upset (ON CONFLICT DO NOTHING)? >> Or a query followed by an insert if needed? The normal case would be that >> the entry already exists (millions of hits vs only the occasional insert >> needed). >> >> > I would look into pre-loading the lookup table (and pre-emptive maintenance). > Add the foreign key, but not the trigger.
That makes sense. Thanks! --- Israel Brewster Software Engineer Alaska Volcano Observatory Geophysical Institute - UAF 2156 Koyukuk Drive Fairbanks AK 99775-7320 Work: 907-474-5172 cell: 907-328-9145