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.

Reply via email to