IE> One solution is to get rid of the :inherited option and simply allow a IE> :subclasses? option to get-instances-by-value/range that uses the mop IE> to find subclass indexes and does a merge sort of all objects returned IE> by the various indexes. This becomes time O(k log_b n) and gets rid of IE> inherited indexing.
Yes, but it doesn't help with iteration with map-... functions and cursor, e.g. when you want latest 10 items or something like that. Reading all items just to get 10 latest will have a huge performance impact. It is possible to traverse multiple cursors at once, but it is weird and slow. So I think while :inherit is not perfect it is a good tool to achieve desired results, especially together with derived indices -- you can do pretty much whatever you want, just API is less than perfect. IE> However, if the k is going to matter or you want a faster option, you IE> can keep :inherited (one big index) and have IE> get-instances-by--value/range filter out classes you didn't ask for IE> (i.e if base class get everything, if asking for subclass and inherited IE> then just return matching subclasses - you could even do this before IE> object instantiation to make it extremely efficient by testing the IE> schema ID associated with the OID (checking for older schemas that need IE> to be upgraded if schema upgrading is set to lazy) I think let's start on a simple approach (filtering using typep) and then maybe implement a faster one. _______________________________________________ elephant-devel site list elephant-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/elephant-devel