2015-05-22 114 views
0
def search(request): 
    found_entries = None 
    query = Q(feedstock__fs_name__icontains=corn 
    found_entries = Sample.objects.filter(query).exclude(status_id=3).order_by('id') 
    queries = request.GET.copy() 
    sample = paging(request, found_entries) 
    return render_to_response('search_results.html', {'sample': sample, 'queries': queries}, 
          context_instance=RequestContext(request)) 

這會返回約9000個條目,查詢需要很長時間。而對於分頁,如果你點擊下一頁,它就會花費同樣的時間,就好像它重新查詢數據一樣。關於如何加快查詢或優化它的任何想法?Django查詢速度慢,優化

+0

你正在查詢的「Sample」表的大小是多少? – Todor

+0

什麼是分頁()? –

+0

示例表具有18000個條目 –

回答

0

您是否嘗試過使用Django分頁設置結果大小?如果不是我說看看https://docs.djangoproject.com/en/1.8/topics/pagination/

這裏的長期和短期的文件,因爲它涉及到你:

從django.core.paginator進口分頁程序,EmptyPage,PageNotAnInteger

def listing(request): 
    contact_list = Contacts.objects.all() 
    paginator = Paginator(contact_list, 25) # Show 25 contacts per page 

    page = request.GET.get('page') 
    try: 
     contacts = paginator.page(page) 
    except PageNotAnInteger: 
     # If page is not an integer, deliver first page. 
     contacts = paginator.page(1) 
    except EmptyPage: 
     # If page is out of range (e.g. 9999), deliver last page of results. 
     contacts = paginator.page(paginator.num_pages) 

    return render_to_response('list.html', {"contacts": contacts})