【问题标题】:Django query is slow, optimizedjango查询慢,优化
【发布时间】:2015-05-22 20:16:32
【问题描述】:
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 个条目,查询需要很长时间。而对于分页,如果您单击下一页,它所花费的时间与重新查询数据一样长。关于如何加快查询或优化查询的任何想法?

【问题讨论】:

  • 您查询的Sample 表的大小是多少?
  • 示例表有 18000 个条目

标签: jquery mysql sql django optimization


【解决方案1】:

您是否尝试过使用 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})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 2011-10-08
    • 2012-03-19
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    相关资源
    最近更新 更多