|
Optimization
|
|
|
Optimization by Approximation-based Filtering and Indexing (cont.) The query then can be re-written query to speed up processing as follows, to implement the following method. First, using an R-tree, the query finds all candidate xy-segments, i.e., whose MBR intersects the MBR of the Fairfax area. Second, for each such candidate xy-segment, the query tests, using SAT, that it actually intersects the Fairfax area. If it does, the query retrieves, using the inversed grouping, all the corresponding trajectories (which must fly over Fairfax because they have a 4D piece whose xy-projection intersects Fairfax). The re-written CCUBE query is as follows. We do not explain all the technicalities of the exact C++ types in it, but merely give a feeling of how it looks - for more details the reader is referred to the full paper.
SELECT traj
INTO {Set<DC_LIN*>} result
//
FROM All_Traj_IG_IAG.MUT_SAT(min_box_of_Fairfax)
AS {Set<G_Pair<C_LIN*,DC_LIN*>*>*} Candidate_Traj_IG
//
FROM *Candidate_Traj_IG AS {G_Pair<C_LIN*,DC_LIN*>*} IG_pair
DEFINE xy_segment AS {C_LIN*} IG_pair->first
WHERE Mut_Sat( *xy_segment, Fairfax ) // Note: MUT_SAT
// on C_LIN
//
DEFINE trajectories_of_xy_segment AS {Set<DC_LIN*>*} IG_pair->second
FROM *trajectories_of_xy_segment AS traj
|
|
presentation created by Victor E. Segal |