Django Pagination работает очень медленно, когда набор данных очень большой (> 100 000), мой набор данных составляет 80 столбцов и более 100 000 строк. когда я загружаю страницу или меняю страницу, это занимает 14-15 секунд. Есть ли что-нибудь, что я могу сделать, чтобы сделать ее быстрой?
что я могу сделать, чтобы сделать ее быстрой. пожалуйста, помогите с этим
модель.py
class Finaltest3(models.Model):
a = models.DateTimeField(db_column='Dat',primary_key=True, blank=True, null=False) # Field name made lowercase.
b = models.TextField(db_column='C', blank=True, null=True) # Field name made lowercase.
c = models.TextField(db_column='S', blank=True, null=True) # Field name made lowercase.
d = models.TextField(db_column='Ca', blank=True, null=True) # Field name made lowercase.
e = models.TextField(db_column='Ac', blank=True, null=True) # Field name made lowercase.
f = models.TextField(db_column='Re', blank=True, null=True) # Field name made lowercase.
.
.
.
.
.
fd = models.TextField(db_column='Add', blank=True, null=True) # Field name made lowercase.
fd= models.TextField(db_column='Addit', blank=True, null=True) # Field name made lowercase.
fd = models.TextField(db_column='Additional', blank=True, null=True) # Field name made lowercase.
class Meta:
managed = False
db_table = 'finaltest3'
view.py
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
import datetime
from datetime import date
from datetime import timedelta
from django.http import HttpResponseRedirect
from django.shortcuts import render
def displayLogs(request):
today = date.today()
lastweek=today - timedelta(days=7)
print('lastweek',lastweek)
user_list = Finaltest3.objects.filter(dat__gt=lastweek)
paginator = Paginator(user_list, 10)
page = request.GET.get('page')
users = paginator.get_page(page)
return render(request,'displayLogs.html',{'users':users})
шаблон.html
<div class="pagination" style="border-style:inset;border-width:5px;padding-bottom: 5px">
{% if users.has_previous %}
<a class="pagination-action" href="?page=1"> <i class="fas fa-angle-double-left"></i></a>
<a class="pagination-action" href="?page={{ users.previous_page_number}}"> <i class="fas fa-angle-left"></i></a>
{% endif %}
{% for num in users.paginator.page_range %}
{% if users.number == num %}
<span class="pagination-number pagination-current"><strong>{{ num }}</strong></span>
{% elif num > users.number|add:'-3' and num < users.number|add:'3' %}
<a class="pagination-number" href="?page={{ num }}">{{num}}</a>
{% endif %}
{% endfor %}
{% if users.has_next %}
<a class="pagination-action" href="?page={{ users.next_page_number }}"><i class="fas fa-angle-right"></i></a>
<a class="pagination-action" href="?page={{ users.paginator.num_pages }}"> <i class="fas fa-angle-double-right"> </i></a>
{% endif %}
</div>
<tbody>
<tr class="gradeX">
{% for item in users %}
<td>{{item.dat}}</td>
<td>{{item.act}}</td>
<td>{{item.actor}}</td>
<td class="center">{{item.target}}</td>
</tr>
{% endfor %}
</tbody>
1
, получите базу данных (2 ядра => 16-ядерный процессор, 8 ГБ памяти => 64 ГБ памяти).2
, получите свой запрос, чтобы оптимизировать его (сколько соединений, по какому столбцу упорядочивать) - person tim   schedule 17.03.2019