I didn't try this approach yet, I'll give it a go and let you know my mileage.
Thanks On Jul 11, 4:06 pm, "Cal Leeming [Simplicity Media Ltd]" <cal.leem...@simplicitymedialtd.co.uk> wrote: > On Mon, Jul 11, 2011 at 3:04 PM, Cal Leeming [Simplicity Media Ltd] < > > > > cal.leem...@simplicitymedialtd.co.uk> wrote: > > > On Mon, Jul 11, 2011 at 2:57 PM, Michel30 <forerunn...@gmail.com> wrote: > > >> Hi all, > > >> I have a basic search function that uses Q objects. > >> After profiling it I found that the actual (mysql) database query > >> finishes in fractions of seconds but the iterating after this can take > >> up to 50 seconds per 10.000 results. > > >> I have been trying to speed it up but I have had not much results.. > > >> My query is this one: > > >> found_entries = model.objects.filter((Q-objects), > >> obsolete=0).order_by('-version','docid') > > >> So far so good, but then I need a dictionary to retrieve only unique > >> 'documentid's'. > > > You could do: > > > # grab all results > > _res = > > model.objects.filter((Q-objects),obsolete=0).order_by('-version','docid').values() > > # re-map them into (id, obj) > > _res = map(lambda x: [x.docid, x], _res) > > # wrap in a dict(), which uses index position 0 as the key, and index > > position 1 as the value > > _res = dict(_res) > > Just tested the same principle, and it seems to work fine. It uses last > object found as the final choice if dups are found. > > >>> _res = [ [1,2], [1,3], [2,4], [2,5] ] > >>> map(lambda x: [x[0], x[1]], _res) > > [[1, 2], [1, 3], [2, 4], [2, 5]]>>> map(lambda x: [x[0], x[1]], _res) > > [[1, 2], [1, 3], [2, 4], [2, 5]] > > >>> dict(map(lambda x: [x[0], x[1]], _res)) > {1: 3, 2: 5} > > > Let me know if this give you the results you need. > > >> rev_dict = {} > > >> This is the part that hurts: > > >> for d in found_entries: > >> rev_dict[d.documentid] = d > > >> And then some more sorting and filtering: > > >> filtered_entries = rev_dict.values() > >> filtered_entries.sort(key=lambda d: d.revisiondate, reverse=True) > > >> Does anyone have some better ideas to achieve this? > > >> Thanks > > >> -- > >> You received this message because you are subscribed to the Google Groups > >> "Django users" group. > >> To post to this group, send email to django-users@googlegroups.com. > >> To unsubscribe from this group, send email to > >> django-users+unsubscr...@googlegroups.com. > >> For more options, visit this group at > >>http://groups.google.com/group/django-users?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.