Am Samstag, den 05.05.2007, 17:42 +0200 schrieb Dominique Lederer:
> hi
> i would like to retrieve a number of *random* entries out of a catalogs field 
> index.
> i tried it with first getting the catalogindex-length an then accessing a
> randomized list-index, but this is very slow, because of the large number of
> entries in the index.
> do you know any better solution?

I'm kind of guessing here. 

You say you are:

- querying the catalog
- accessing a random index from the result set
- noticing that this is slow

Does this only happen if the index is very large, e.g. you're retrieving
an element from the end of the result set?

I don't know exactly how the result sets are organized, but this
behaviour would imply that loading a later element triggers something
like loading the earlier elements too. I can't really imagine that.

I think the general problem that this is slow lies in the fact that
randomly selecting elements means 

a) you need access to the full list of things
b) applying a sort 

Sorting has a complexity of at least O(n log n) which becomes slow
enough for large sets that it's noticable.

BTW: How large is large?


gocept gmbh & co. kg - forsterstra├če 29 - 06112 halle/saale - germany - [EMAIL PROTECTED] - phone +49 345 122 9889 7 -
fax +49 345 122 9889 1 - zope and plone consulting and development

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

Zope3-users mailing list

Reply via email to