Re: [WDB-Development] wci.read on wdb2ts
Brought to you by:
falkenroth,
michaeloa
From: V. B. <veg...@me...> - 2008-11-06 12:56:50
|
> 1. Delayed geographic check > > The current wci.read query generated, checks that a point being > requested is within the geographic boundaries of the field being > returned (using within and transform). This prevents us from returning > 100+ rows to point extraction function, when perhaps only 1 row is of > interest. > > The problem: the function is costly (although we need not be too > concerned about the 3 ms in the context of 100); more importantly, the > function is impossible to estimate and as a result it confused the > optimizer. > > Proposed solution: > - We assume that the majority of the geographic searches we get will be > on appropriate data sources (i.e., applications will not often search > for Australian locations on Hirlam data). > - The weeding out of data by geography, will then instead occur when we > (try to) extract the grid points from the data (if the grid point that > we calculate falls outside the grid, we obviously don't return data for > that point). The extra check at this point should not - under normal > circumstances - be particularly costly. > > The solution may need to be different for Polygons; we'll just have to > deal with that when it comes up. > Comments...? Particularly on #1 Vegard? The reasoning seems sound to me, especially since we know that the boundary check is inaccurate. However, I would like to know more about the result the other optimizations: Last time I looked at the difference in performance between fetching a point and fetching a reference to an entire field was fairly small. If this is still true I believe the benefits from keeping the check may outweight the benefits of removing it. A user may not normally request data for a wrong location when working with a norwegian hirlam model. However, the check also guards against typos and misunderstandings. For example, the wkt specification of point data makes it fairly easy to swap latitude and longitude parameters. Is it possible to run this in two steps? First use point specification to find the correct placeid(s), and then perform the select on wci_xxx.oidvalue? I guess this should make the planner happy. VG |