Hi, I developed a simple index using ZODB. Searching for single values is very fast. Searching big ranges is slow.
Example: Search: customer_id=0815 date_start=2001-01-01 date_end=2004-12-31 The index holds a btree which maps values to docids. The search for customer_id is very fast (Maybe 500 results) . But the range search from date_start to date_end is slow (Maybe 100.000 results). Up to now I use the intersection method of the BTree package to join the result with a logical AND. It would be better if the index would do the search for customer_id first, and then filter the result by deleting entries which are not in the given time period. Has anyone done such a "Query Optimization"? (Zope, Zope3, IndexCatalog, ...) Since btrees and btree ranges don't know their size, you need to do something like this: - do range searches at the end - if index "foo" is used, use it first, ... Thomas _______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org http://mail.zope.org/mailman/listinfo/zodb-dev