Thread: Using oids for fast read-only access?
I've implemented r-trees on top of PostgreSQL (since I need more control over the r-tree than you can have with the r-tree index that comes with PostgreSQL) and I would like to know whether there is an efficient way to dereference the data in the leaves. Currently the geometry database looks like this: Table "geometry" Attribute | Type | Modifier -----------+------------------+---------- id | integer | x1 | double precision | y1 | double precision | z1 | double precision | x2 | double precision | y2 | double precision | z2 | double precision | Indices: geometry_index (on id) The leaves in the corresponding rtree store id's. After inserting the geometry, the data is read only, therefore I would like to replace the id's in the rtree with oids (or anything that has a constant time access). The problem is that a "select * from geometry where oid=xxx" is a lot slower than selecting objects by their id (since the former does a seq scan and the later an index scan). The PostgreSQL documentation doesn't say much about oids and their use, therefore I need al little help... best wishes, Christopher Zach
Christopher Zach writes: > After inserting the geometry, the data is read only, therefore I would like > to replace the id's in the rtree with oids (or anything that has a constant > time access). And what makes you think oids have a more "constant" access time than integers? The only thing you will save if you omit the id column is space. > The problem is that a "select * from geometry where oid=xxx" is a lot slower > than selecting objects by their id (since the former does a seq scan and the > later an index scan). No surprise if you haven't got an index on oid. > The PostgreSQL documentation doesn't say much about oids and their use, > therefore I need al little help... Oids aren't really any different than other (integer) types, only that they are generated automatically. -- Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter
Am Freitag, 10. August 2001 12:24 schrieben Sie: > Christopher Zach writes: > > After inserting the geometry, the data is read only, therefore I would > > like to replace the id's in the rtree with oids (or anything that has a > > constant time access). > > And what makes you think oids have a more "constant" access time than > integers? The only thing you will save if you omit the id column is > space. Because I thought the oid has some direct relationship to the physical page the row is stored in. The intention was to jump directly to the row instead of going through a btree... > Oids aren't really any different than other (integer) types, only that > they are generated automatically. It seems so :( But how would you speed up many individual selects on nonconsecutive rows? bye, Christopher Zach