Wolfgang Enzinger wrote: > First, query the overall extent of your data, like this: > SELECT MIN(mingx),MAX(maxgx),MIN(mingy),MAX(maxgy) FROM flst_shape_index;
This results in a full table scan. Instead of caching these values manually, it would be a better idea to read them from the index: SELECT rtreenode(2, data) FROM flst_shape_index_node WHERE nodeno = 1; (rtreenode() is undocumented; maybe you should use your own decoder.) > Let SQLite know about that likelihood in a JOIN query This does not appear to change anything with a virtual table: CREATE TABLE t(id INETGER PRIMARY KEY, x, [...]); CREATE VIRTUAL TABLE i USING rtree(id, minx, maxx); SELECT t.* FROM t JOIN i USING (id) WHERE likelihood(i.minx BETWEEN 10 AND 20, 0.000001); --EQP-- 0,0,1,SCAN TABLE i VIRTUAL TABLE INDEX 2:D0B0 --EQP-- 0,1,0,SEARCH TABLE t USING INTEGER PRIMARY KEY (rowid=?) SELECT t.* FROM t JOIN i USING (id) WHERE likelihood(i.minx BETWEEN 10 AND 20, 0.999999); --EQP-- 0,0,1,SCAN TABLE i VIRTUAL TABLE INDEX 2:D0B0 --EQP-- 0,1,0,SEARCH TABLE t USING INTEGER PRIMARY KEY (rowid=?) Regards, Clemens _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users