Dear all, I would like to discuss a new feature in the SQLite R-tree which is not very difficult to implement but would improve query performance a lot for use cases where the MBR (minimum bounding rectangle) of the query object leads to a too large candidate set.
First of all the data structure in the database can stay at it is, also the R*-tree splitting algorithm. The only thing I would like to see is that it is possible to register a function at the R-tree module which returns true or false and which gets as parameters the currently to be evaluated R*-tree rectangle and a void pointer representing the query object. Thus it would be possible to evaluate more complex query geometries during R-tree traversal. The disadvantage of the approach is that the intersection tests between more complex query objects and an r-tree rectangle is more time consuming (higher cpu cost for one test) but on the other hand the resulting candidate set would be much smaller (smaller i/o cost and less cpu-intersection tests). The current approach could also be modelled this way, if the testing simply compares two rectangles and returns true if they intersect. So the question is whether the intersection testing between query object and R-tree bounding rectangle cannot be passed to the r-tree module as user-defined function and then be applied by the r-tree module during tree traversal. Any thoughts on this? Best Martin _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users