response_title = models.TextField(null=True,blank=True)
response_status_code = models.IntegerField(null=True,blank=True)
response_body = models.TextField(null=True,blank=True)
недавно я столкнулся с низкой производительностью своего сайта, так что вот мое наблюдение из оболочки Django, у меня 32 000 записей в моей модели, и выполнение с icontains
медленное по сравнению с contains
также count
на icontains
запрос занял 4 секунды, тогда как count
на contain
занял 0,3 секунды.
тип данных, которые я храню в response_body
- это необработанное тело ответа.
from .models import Response_Dataset
>>> Response_Dataset.objects.count() ## 0.1 sec
32289
>> Response_Dataset.objects.filter(response_body__icontains='hack') ## 0.4 seconds
>>> x = Response_Dataset.objects.filter(response_body__icontains='hack')
>>> x.count() ### 4 seconds
65
>>> x = Response_Dataset.objects.filter(response_body__contains='a') ### 0.2 seconds
>>> x.count() ### 0.3 seconds
23857
Выполнение с icontains
в любом другом поле, кроме response_body
, чрезвычайно быстро, например, на response_title
или response_status_code